使用 ALTER TABLE ... PARTITION BY ... 可動態切換分區類型(RANGE ↔ KEY ↔ HASH 等),效果等同 DROP + CREATE,資料自動重組。
ALTER TABLE trb3 ADD PARTITION (PARTITION p5 VALUES LESS THAN (2010));
ALTER TABLE trb3 REORGANIZE PARTITION p3, p5 INTO (PARTITION p5 VALUES LESS THAN (2010));
ALTER TABLE trb3 REORGANIZE PARTITION p5 INTO (PARTITION p3 VALUES LESS THAN (2005), PARTITION p4 VALUES LESS THAN (2010));
-- 從 12 個縮減至 8 個 ALTER TABLE trb3 COALESCE PARTITION 4;
資料按新 hash 值自動重分佈,總行數不變。
ALTER TABLE pt EXCHANGE PARTITION p WITH TABLE nt;
nt 非分區表、非臨時表nt 無外鍵、無被引用外鍵nt 所有行滿足分區 p 的範圍條件除 ALTER, INSERT, CREATE 外,尚需 DROP 權限。
AUTO_INCREMENT 重置IGNORE 關鍵字無效| 命令 | 用途 | 範例 |
|---|---|---|
REBUILD PARTITION | 重建分區(消除碎片),等同 drop+re-insert | ALTER TABLE t1 REBUILD PARTITION p0, p1; |
OPTIMIZE PARTITION | 回收空間、整理碎片(含變長欄位大量更新後) | ALTER TABLE t1 OPTIMIZE PARTITION p0, p1; |
ANALYZE PARTITION | 更新鍵值分布統計資訊 | ALTER TABLE t1 ANALYZE PARTITION p3; |
REPAIR PARTITION | 修復損壞分區 | ALTER TABLE t1 REPAIR PARTITION p0, p1; |
CHECK PARTITION | 檢查資料/索引完整性 | ALTER TABLE trb3 CHECK PARTITION p1; |
TRUNCATE PARTITION | 清空分區資料(保留結構) | ALTER TABLE t1 TRUNCATE PARTITION ALL; |
OPTIMIZE,會重建整表(5.6.9+ 會警告),建議改用 REBUILD + ANALYZEmysqlcheck / myisamchk 不支援分區表TABLE_ROWS 為優化器估算值,非即時精確值;切換分區策略後需等待統計更新或手動 ANALYZE。