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