首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL 分區表管理維護全書:策略變更、分區增刪、交換與維護命令

     編輯:MySQL 資料庫相關知識

分區策略變更

使用 ALTER TABLE ... PARTITION BY ... 可動態切換分區類型(RANGE ↔ KEY ↔ HASH 等),效果等同 DROP + CREATE,資料自動重組。

RANGE / LIST 分區常用操作

新增分區

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));

HASH / KEY 分區擴縮容

-- 從 12 個縮減至 8 個
ALTER TABLE trb3 COALESCE PARTITION 4;

資料按新 hash 值自動重分佈,總行數不變。

分區與非分區表資料交換

ALTER TABLE pt EXCHANGE PARTITION p WITH TABLE nt;

嚴格前置條件

  1. nt 非分區表、非臨時表
  2. 結構完全一致(欄位、順序、索引、引擎)
  3. nt 無外鍵、無被引用外鍵
  4. nt 所有行滿足分區 p 的範圍條件

權限需求

除 ALTER, INSERT, CREATE 外,尚需 DROP 權限。

行為細節

  • 不觸發觸發器
  • AUTO_INCREMENT 重置
  • IGNORE 關鍵字無效
  • 子分區表只能交換子分區,不可直接交換父分區

分區維護命令速查

命令用途範例
REBUILD PARTITION重建分區(消除碎片),等同 drop+re-insertALTER 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;

重要限制

  • 上述命令不支援子分區(需逐個父分區操作)
  • InnoDB 不支援單分區 OPTIMIZE,會重建整表(5.6.9+ 會警告),建議改用 REBUILD + ANALYZE
  • mysqlcheck / myisamchk 不支援分區表

INFORMATION_SCHEMA.PARTITIONS 統計資訊延遲

TABLE_ROWS 為優化器估算值,非即時精確值;切換分區策略後需等待統計更新或手動 ANALYZE。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved