mysql在創建表時使用PARTITION BY子句定義每個分區存放的數據。在執行查詢的時候優化器會根據分區定義過濾那些沒有我們需要數據的分區,這樣只需要查找包含需要數據的分區就可以了
以下場景適合運用表分區技術:
1,表非常大以至于無法全部放在內存中。
2,分區表的數據更容易維護,可以對一個獨立的分區進行優化,檢查,修復等操作。
3,分區表的數據可以在不同的無力設備上,從而高效的利用多個硬件設備
4,可以使用分區表來避免某些特殊的瓶頸
5,如果需要,還可以備份和恢復獨立的分區。
分區表的主要限制
1,一個表最多只有1024個分區。
2,在mysql5.1中,分區表達式必須是整數,或者返回整數的表達式。在mysql5.5中某些場景可以直接利用列來進行區分
3,如果分區中有主鍵或者唯一索引的列,那么所有主建列和唯一索引列都必須包含進來。
4,分區表中無法使用外鍵約束。
對于大多數系統來說100個左右的分區是沒有問題的。
mysql只能在使用分區函數的列本身進行比較時才能過濾分區,而不能根據表達式的值去過濾分區,即使這個表達式就是分區函數也不行。