首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL 分區表維護管理進階:REBUILD、OPTIMIZE、ANALYZE 與分區交換實戰

     編輯:MySQL 綜合教學

MySQL 分區表維護管理進階:REBUILD、OPTIMIZE、ANALYZE 與分區交換實戰

分區表上線後,碎片整理、統計資訊更新、故障修復、資料遷移等維護操作必不可少。本文系統梳理 MySQL 5.6+ 分區維護命令、資訊查看方式與分區交換技術。

一、分區維護核心命令

1. REBUILD PARTITION — 碎片整理首選

ALTER TABLE t1 REBUILD PARTITION p0, p1;

等同於「刪除分區資料 → 重新插入」,專門解決碎片問題,不鎖表(MDL 鎖除外),InnoDB 線上執行。

2. OPTIMIZE PARTITION — 謹慎使用

ALTER TABLE t1 OPTIMIZE PARTITION p0, p1;

相當於依次執行 CHECK → ANALYZE → REPAIR。重大限制:InnoDB 不支援分區級 OPTIMIZE,執行時會 重建整張表(MySQL 5.6.9+)。建議改用 REBUILD PARTITION 或 ANALYZE PARTITION。

3. ANALYZE PARTITION — 更新統計資訊

ALTER TABLE t1 ANALYZE PARTITION p3;

讀取並儲存分區值分布,優化器依賴此統計生成執行計劃。

4. REPAIR PARTITION — 修復損壞分區

ALTER TABLE t1 REPAIR PARTITION p0, p1;

針對 MyISAM/Archive 引擎,InnoDB 透過崩潰恢復機制自動修復,較少用到。

5. CHECK PARTITION — 檢查錯誤

ALTER TABLE trb3 CHECK PARTITION p1;

通用語法糖

  • 分區名可用 ALL 替代,表示全部分區
  • 不支援子分區:上述命令均不適用於 SUBPARTITION
  • mysqlcheck / myisamchk 不支援分區表

二、獲取分區元資訊四大途徑

  1. SHOW CREATE TABLE tbl\G — 查看完整分區定義 DDL
  2. SHOW TABLE STATUS\G — Create_options 顯示 partitioned 識別
  3. INFORMATION_SCHEMA.PARTITIONS — 系統表查詢分區級統計(行數、大小、引擎等)
  4. EXPLAIN PARTITIONS SELECT ... — 查看具體 SQL 訪問哪些分區(分區裁剪驗證)

三、分區交換:秒級資料遷移神技

ALTER TABLE partitioned_tbl EXCHANGE PARTITION p WITH TABLE normal_tbl;

核心限制(必須全滿足)

  1. 目標表 不能是分區表
  2. 目標表 不能是臨時表
  3. 結構 完全一致(欄位、索引、外鍵約束)
  4. 目標表 無外鍵關係(既非主鍵也非外鍵)
  5. 目標表資料 必須滿足分區邊界條件

典型應用場景

  • 歷史資料歸檔:將冷分區交換出來備份/刪除,避免大量 DELETE 產生碎片
  • 大批量導入:先導入普通表,驗證無誤後交換進分區表,業務零感知
  • 分區拆分/合併前資料騰挪

官方文檔:Partitioning Management - Exchange

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