表和分區的一些維護任務,適用於在mysql5.6的分區表上用sql語句進行。
維護分區表,可以使用支持分區表的語句:CHECK TABLE, OPTIMIZE TABLE, ANALYZE TABLE, and REPAIR TABLE
你可以使用ALTER TABLE的一些擴展來執行這種類型的一個或多個分區。如下:
1.重建分區: 這和先刪除保存在分區中的所有記錄,然後重新插入它們,具有同樣的效果。它可用於整理分區碎片。如:
ALTER TABLE t1 REBUILD PARTITION p0, p1;
2.優化分區:如果從分區中刪除了大量的行,或者對一個帶有可變長度的行(也就是說,有VARCHAR,BLOB,或TEXT類型的列)作了許多修改,可以使用“ALTER TABLE … OPTIMIZE PARTITION”來收回沒有使用的空間,並整理分區數據文件的碎片。如:
ALTER TABLE t1 OPTIMIZE PARTITION p0, p1;
在一個給定的分區表上使用“OPTIMIZE PARTITION”等同於在那個分區上運行CHECK PARTITION,ANALYZE PARTITION,和REPAIR PARTITION。
3.分析分區:讀取並保存分區的鍵分布。如:
ALTER TABLE t1 ANALYZE PARTITION p3;
4.修補分區: 修補被破壞的分區。如:
ALTER TABLE t1 REPAIR PARTITION p0,p1;
5.檢查分區: 可以使用幾乎與對非分區表使用CHECK TABLE 相同的方式檢查分區。如:
ALTER TABLE trb3 CHECK PARTITION p1;
這個命令可以告訴你表t1的分區p1中的數據或索引是否已經被破壞。如果發生了這種情況,使用“ALTER TABLE … REPAIR PARTITION”來修補該分區。
列表中每個語句也支持用關鍵字ALL 來替代列表中的分區名。如:
ALTER TABLE trb3 CHECK PARTITION ALL;
使用 mysqlcheck 和 myisamchk 是不支持分區表的。
在mysql 5.6中你可以用ALTER TABLE … TRUNCATE PARTITION來截斷分區。這個語句可以用來刪除一個或多個分區中的所有行,和TRUNCATE TABLE從表中刪除所有行的操作方式大致相同。
ALTER TABLE … TRUNCATE PARTITION ALL 截斷表中所有的分區。