分區表上線後,碎片整理、統計資訊更新、故障修復、資料遷移等維護操作必不可少。本文系統梳理 MySQL 5.6+ 分區維護命令、資訊查看方式與分區交換技術。
ALTER TABLE t1 REBUILD PARTITION p0, p1;
等同於「刪除分區資料 → 重新插入」,專門解決碎片問題,不鎖表(MDL 鎖除外),InnoDB 線上執行。
ALTER TABLE t1 OPTIMIZE PARTITION p0, p1;
相當於依次執行 CHECK → ANALYZE → REPAIR。重大限制:InnoDB 不支援分區級 OPTIMIZE,執行時會 重建整張表(MySQL 5.6.9+)。建議改用 REBUILD PARTITION 或 ANALYZE PARTITION。
ALTER TABLE t1 ANALYZE PARTITION p3;
讀取並儲存分區值分布,優化器依賴此統計生成執行計劃。
ALTER TABLE t1 REPAIR PARTITION p0, p1;
針對 MyISAM/Archive 引擎,InnoDB 透過崩潰恢復機制自動修復,較少用到。
ALTER TABLE trb3 CHECK PARTITION p1;
ALL 替代,表示全部分區mysqlcheck / myisamchk 不支援分區表SHOW CREATE TABLE tbl\G — 查看完整分區定義 DDLSHOW TABLE STATUS\G — Create_options 顯示 partitioned 識別INFORMATION_SCHEMA.PARTITIONS — 系統表查詢分區級統計(行數、大小、引擎等)EXPLAIN PARTITIONS SELECT ... — 查看具體 SQL 訪問哪些分區(分區裁剪驗證)ALTER TABLE partitioned_tbl EXCHANGE PARTITION p WITH TABLE normal_tbl;