mysql在創(chuàng)建表時(shí)使用PARTITION BY子句定義每個(gè)分區(qū)存放的數(shù)據(jù)括堤。在執(zhí)行查詢的時(shí)候優(yōu)化器會(huì)根據(jù)分區(qū)定義過濾那些沒有我們需要數(shù)據(jù)的分區(qū)斟或,這樣只需要查找包含需要數(shù)據(jù)的分區(qū)就可以了
以下場(chǎng)景適合運(yùn)用表分區(qū)技術(shù):
1,表非常大以至于無法全部放在內(nèi)存中环凿。
2梧兼,分區(qū)表的數(shù)據(jù)更容易維護(hù),可以對(duì)一個(gè)獨(dú)立的分區(qū)進(jìn)行優(yōu)化拷邢,檢查,修復(fù)等操作屎慢。
3瞭稼,分區(qū)表的數(shù)據(jù)可以在不同的無力設(shè)備上,從而高效的利用多個(gè)硬件設(shè)備
4腻惠,可以使用分區(qū)表來避免某些特殊的瓶頸
5环肘,如果需要,還可以備份和恢復(fù)獨(dú)立的分區(qū)集灌。
分區(qū)表的主要限制
1悔雹,一個(gè)表最多只有1024個(gè)分區(qū)复哆。
2,在mysql5.1中腌零,分區(qū)表達(dá)式必須是整數(shù)梯找,或者返回整數(shù)的表達(dá)式。在mysql5.5中某些場(chǎng)景可以直接利用列來進(jìn)行區(qū)分
3益涧,如果分區(qū)中有主鍵或者唯一索引的列锈锤,那么所有主建列和唯一索引列都必須包含進(jìn)來。
4闲询,分區(qū)表中無法使用外鍵約束久免。
對(duì)于大多數(shù)系統(tǒng)來說100個(gè)左右的分區(qū)是沒有問題的。
mysql只能在使用分區(qū)函數(shù)的列本身進(jìn)行比較時(shí)才能過濾分區(qū)扭弧,而不能根據(jù)表達(dá)式的值去過濾分區(qū)阎姥,即使這個(gè)表達(dá)式就是分區(qū)函數(shù)也不行。