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
























