在實際開發中,絕大部分開發人員應該都沒有機會接觸到上億級別的資料,如果SQL Server中的資料量達到億級了,我們勢必要對資料庫伺服器做一系列的最佳化措施,否則難以支撐這個量級。
1、合理的索引
2、分散式資料庫部署
我們可以按業務型別將資料做垂直領域劃分,不同業務儲存在不同資料庫伺服器上,透過分散式部署將業務分離,有效緩解了資料庫壓力。不過這種分散式部署對於後期業務整合和綜合查詢不是太友好,架構如下圖示:
3、資料庫分割槽
預設情況下,資料庫裡一張表的資料都會儲存在一個地方,但採用分割槽後,這些資料會均衡儲存在不同地方,這樣做能提高SELECT查詢效率。一旦某個分割槽損壞後,也可以利用修復工具對單分割槽進行修復。注意,資料庫分割槽只適用於海量資料前提下,資料量較少時不需要做,因為資料庫分割槽也有一定的效能消耗。
4、資料庫分表
資料庫本身都是有效能瓶頸的,我們可以採取橫向擴充套件方案來解決查詢效率問題。可以根據業務需求,按一定規則(比如:時間)來對資料進行分表儲存,這樣一個大的資料集被分割成很多小的資料集,每次查詢都在小的資料集合裡查詢,效能會更高。
5、讀寫分離
讀寫分離顧名思義就是資料庫讀操作和寫操作在不同資料庫上。因為資料庫為了保證資料有效性,在寫入資料時往往會進行寫鎖操作,很多情況下會影響讀操作的效能。我們寫入資料時操作主庫,查詢資料時操作從庫,提高了資料併發性。
SQL Server提供了一個SQL Server Profile工具,透過它可以分析資料庫查詢效率。如下圖示:
在實際開發中,絕大部分開發人員應該都沒有機會接觸到上億級別的資料,如果SQL Server中的資料量達到億級了,我們勢必要對資料庫伺服器做一系列的最佳化措施,否則難以支撐這個量級。
海量資料庫最佳化措施1、合理的索引
2、分散式資料庫部署
我們可以按業務型別將資料做垂直領域劃分,不同業務儲存在不同資料庫伺服器上,透過分散式部署將業務分離,有效緩解了資料庫壓力。不過這種分散式部署對於後期業務整合和綜合查詢不是太友好,架構如下圖示:
3、資料庫分割槽
預設情況下,資料庫裡一張表的資料都會儲存在一個地方,但採用分割槽後,這些資料會均衡儲存在不同地方,這樣做能提高SELECT查詢效率。一旦某個分割槽損壞後,也可以利用修復工具對單分割槽進行修復。注意,資料庫分割槽只適用於海量資料前提下,資料量較少時不需要做,因為資料庫分割槽也有一定的效能消耗。
4、資料庫分表
資料庫本身都是有效能瓶頸的,我們可以採取橫向擴充套件方案來解決查詢效率問題。可以根據業務需求,按一定規則(比如:時間)來對資料進行分表儲存,這樣一個大的資料集被分割成很多小的資料集,每次查詢都在小的資料集合裡查詢,效能會更高。
5、讀寫分離
讀寫分離顧名思義就是資料庫讀操作和寫操作在不同資料庫上。因為資料庫為了保證資料有效性,在寫入資料時往往會進行寫鎖操作,很多情況下會影響讀操作的效能。我們寫入資料時操作主庫,查詢資料時操作從庫,提高了資料併發性。
透過工具分析查詢效能SQL Server提供了一個SQL Server Profile工具,透過它可以分析資料庫查詢效率。如下圖示: