本文樣本原始碼或素材下載
摘要:SQL Server 2005 中基於表的資料分割函數為簡化分區表的建立和維護過程提供了靈活性和更好的效能。追溯從邏輯分區表和手動分區表的功能到最新資料分割函數的發展曆程,探索為什麼、何時以及如何使用 SQL Server 2005 設計、實現和維護分區表。
為什麼要進行分區?
什麼是分區?為什麼要使用分區?簡單的回答是:為了改善大型表以及具有各種訪問模式的表的延展性和可管理性。通常,建立表是為了儲存某種實體(例如客戶或銷售)的資訊,並且每個表只具有描述該實體的屬性。一個表對應一個實體是最容易設計和理解的,因此不需要最佳化這種表的效能、延展性和可管理性,尤其是在表變大的情況下。
大型表是由什麼構成的呢?超大型資料庫 (VLDB) 的大小以數百 GB 計算,甚至以 TB 計算,但這個術語不一定能夠反映資料庫中各個表的大小。大型資料庫是指無法按照預期方式啟動並執行資料庫,或者運行成本或維護成本超出預定維護要求或預算要求的資料庫。這些要求也適用於表;如果其他使用者的活動或維護操作限制了資料的可用性,則可以認為表非常大。例如,如果效能嚴重下降,或者每天、每周甚至每個月的維護期間有兩個小時無法訪問資料,則可以認為銷售表非常大。有些情況下,周期性的停機時間是可以接受的,但是通過更好的設計和分區實現,通常可以避免或最大程度地減少這種情況的發生。雖然術語 VLDB 僅適用於資料庫,但對分區來說,瞭解表的大小更重要。
除了大小之外,當表中的不同行集擁有不同的使用模式時,具有不同訪問模式的表也可能會影響效能和可用性。儘管使用模式並不總是在變化(這也不是進行分區的必要條件),但在使用模式發生變化時,通過分區可以進一步改善管理、效能和可用性。還以銷售表為例,當前月份的資料可能是可讀寫的,但以往月份的資料(通常占表資料的大部分)是唯讀。在資料使用發生變化的類似情況下,或在維護成本隨著在表中讀寫資料的次數增加而變得異常龐大的情況下,表響應使用者請求的能力可能會受到影響。相應地,這也限制了伺服器的可用性和延展性。