回覆列表
  • 1 # 網路圈

    在實際開發中,絕大部分開發人員應該都沒有機會接觸到上億級別的資料,如果SQL Server中的資料量達到億級了,我們勢必要對資料庫伺服器做一系列的最佳化措施,否則難以支撐這個量級。

    海量資料庫最佳化措施

    1、合理的索引

    2、分散式資料庫部署

    我們可以按業務型別將資料做垂直領域劃分,不同業務儲存在不同資料庫伺服器上,透過分散式部署將業務分離,有效緩解了資料庫壓力。不過這種分散式部署對於後期業務整合和綜合查詢不是太友好,架構如下圖示:

    3、資料庫分割槽

    預設情況下,資料庫裡一張表的資料都會儲存在一個地方,但採用分割槽後,這些資料會均衡儲存在不同地方,這樣做能提高SELECT查詢效率。一旦某個分割槽損壞後,也可以利用修復工具對單分割槽進行修復。注意,資料庫分割槽只適用於海量資料前提下,資料量較少時不需要做,因為資料庫分割槽也有一定的效能消耗。

    4、資料庫分表

    資料庫本身都是有效能瓶頸的,我們可以採取橫向擴充套件方案來解決查詢效率問題。可以根據業務需求,按一定規則(比如:時間)來對資料進行分表儲存,這樣一個大的資料集被分割成很多小的資料集,每次查詢都在小的資料集合裡查詢,效能會更高。

    5、讀寫分離

    讀寫分離顧名思義就是資料庫讀操作和寫操作在不同資料庫上。因為資料庫為了保證資料有效性,在寫入資料時往往會進行寫鎖操作,很多情況下會影響讀操作的效能。我們寫入資料時操作主庫,查詢資料時操作從庫,提高了資料併發性。

    透過工具分析查詢效能

    SQL Server提供了一個SQL Server Profile工具,透過它可以分析資料庫查詢效率。如下圖示:

  • 中秋節和大豐收的關聯?
  • 你看的第一本網路小說是什麼?對你後來的閱讀興趣是否有很大影響?