在使用的分區(qū)表中,遇到一些問題,也想到一些問題。就一起總結(jié)起來。
1. 像主表--從表,這種結(jié)構(gòu)才應(yīng)用同樣的分區(qū)架構(gòu)和分區(qū)函數(shù),如訂單主表--訂單詳細(xì)表。
這樣可以存儲(chǔ)對齊,于IO和聯(lián)接查詢性能都有提升。
但是如果兩張不相關(guān)的表,最好不要用同樣分區(qū)架構(gòu)和分區(qū)函數(shù)。因?yàn)樵趯ζ渲幸粡埍碜龇謪^(qū)結(jié)構(gòu)調(diào)整時(shí),會(huì)同樣作用到另一張表。
2. 每個(gè)分區(qū)對應(yīng)一個(gè)不同的文件組,并置于不同的物理磁盤。這是官方的最佳實(shí)踐。
但是,我在實(shí)踐中發(fā)現(xiàn)這樣管理起來很不方便。比如,訂單表,保留最近12個(gè)月的數(shù)據(jù),分成12分區(qū)。訂單存檔表,因?yàn)榱刻螅赡軙?huì)按三年前一個(gè)分區(qū),
最近三年每年一個(gè)分區(qū),共四個(gè)分區(qū)。這樣當(dāng)把訂單表的“過時(shí)”分區(qū)切到訂單存檔表時(shí),由于不在同一個(gè)文件組,就需要一個(gè)零時(shí)中間表,最后也是做跨文件組傳輸數(shù)據(jù),
用不上Partition Switch的快速切換。要是數(shù)據(jù)量大的話,也會(huì)慢,或借助其它辦法。
個(gè)人認(rèn)為,對于這兩個(gè)大表,何不如劃一個(gè)專用文件組,多建幾個(gè)數(shù)據(jù)文件并置于不同的物理磁盤上。因?yàn)槲募M中的數(shù)據(jù)文件是按比率填充的,這樣也能實(shí)現(xiàn)IO均衡。
查詢時(shí),更能受益于磁盤并行操作。而且同一個(gè)文件組中的做分區(qū)切換時(shí),就能應(yīng)用上Partition Switch的快速切換。
3. 對于分區(qū)表的查詢,應(yīng)該使用分區(qū)列做為主要檢索條件。單表查詢時(shí),就能定位到特定分區(qū)。聯(lián)接查詢時(shí),關(guān)聯(lián)列也要是分區(qū)列,如果是存儲(chǔ)對齊就能應(yīng)用分區(qū)消除來進(jìn)一步提升性能。
4. 還有一些大表,是用自增ID做主鍵索引的。如產(chǎn)品表。對于這種表,與其它表關(guān)聯(lián)最多就是ID。如果一定對它分區(qū),我個(gè)人認(rèn)為分區(qū)列是選ID列。
可是選了ID列分區(qū),與其它表關(guān)聯(lián)時(shí),只是實(shí)現(xiàn)在查詢時(shí)快速定位到產(chǎn)品表的某個(gè)分區(qū),減少了掃描的量,提升了IO.