如何設計合理的多表關聯的表分區
在前一篇《手把手教你建立SQL數據庫的表分區》筆記中,我給大家講述了如何建立表分區,但是沒有闡述更深層次的問題,這里我補充一下,希望看帖的朋友踴躍討論或者拍磚。
我們在日常的設計過程中,一個數據庫往往有很多表,這些表之間存在著一定的關聯。正是因為這些關聯給如何實現一個高性能的分區帶來了挑戰。下面是設計多表之間存在關聯的表的分區的三個重要原則:
1)相關聯的兩個或多個表,在建立分區的時候每個表***選擇有相同數量的分區參數,而且參數的類型要相同。比如訂單的主從表之間,如果主表選擇了創建時間作為分區條件,那么從表也應該以時間字段來作為分區的條件。
2)選擇相同個的分區數,比如主表進行了10個分區,那么從表也進行10個分區。一個表最多可進行1000個分區。
3)選擇相同的分區臨界值,比如從表選擇了時間‘20100101’,那么從表也選擇‘20100101’作為分區臨界值。
滿足上述三個條件,數據庫引擎在對分區進行查詢的時候會自動對各個分區按查詢給定的條件進行分區連接,極大的提高了連接的效率。
補充:1)進行表分區的多個表必須位于同一個數據庫中
2)當你糾結于表分區還是分區視圖的時候,優先選擇表分區
3)對于表上有索引的表進行分區,通常的做法是:先建立表分區,而后為表建立索引,這樣數據會自動以表的分區函數和分區方案為索引建立分區。但是才創建的時候為索引指定了不同的分區方案或者指定了特定的文件組來存儲索引的話,數據庫將不會自動為索引建立分區。
4)更多的限制請參考:http://msdn.microsoft.com/zh-cn/library/ms187526.aspx
---存在即是合理---
【編輯推薦】