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

MySQL 分區管理全攻略:增刪改查、NULL 處理與效能優化

     編輯:MySQL 綜合教學

MySQL 分區管理全攻略:增刪改查、NULL 處理與效能優化

分區建立後,全生命週期管理同樣關鍵。本文系統梳理各分區類型的 NULL 語義、DDL 操作語法、重組策略,並深度剖析分區對查詢效能的實質影響。

一、不同分區類型對 NULL 值的處理邏輯

分區類型NULL 處理規則
RANGE視為最小值,歸入首個分區
LIST必須顯式枚舉於 VALUES IN,否則報錯
HASH/KEY視為 0 參與雜湊計算

二、RANGE 與 LIST 分區的 DDL 管理操作

1. 刪除分區(連同資料一併移除)

ALTER TABLE emp DROP PARTITION p0;

2. 新增分區

-- RANGE:只能加在最大值之後
ALTER TABLE emp ADD PARTITION (PARTITION p5 VALUES LESS THAN (5000));

-- LIST:不可與現有分區枚舉值重疊
ALTER TABLE emp ADD PARTITION (PARTITION p5 VALUES IN (11,12));

3. 重定義分區(拆分/合併)

-- RANGE 拆分:原 p5(0-5000) 拆為 p5(0-3000)、p6(3000-4000)、p7(4000-5000)
ALTER TABLE emp REORGANIZE PARTITION p5 INTO (
    PARTITION p5 VALUES LESS THAN (3000),
    PARTITION p6 VALUES LESS THAN (4000),
    PARTITION p7 VALUES LESS THAN (5000)
);

-- LIST 合併:將 p4、p5、p6 合併為新 p4
ALTER TABLE emp REORGANIZE PARTITION p4,p5,p6 INTO (
    PARTITION p4 VALUES IN (1,2,3,4,5,6,7,8,9,10)
);

限制: 拆分只能相鄰、不能跨越;不能改變分區類型(RANGE↔LIST 不互通)。

三、HASH 與 KEY 分區的動態調整

-- 创除 3 個分區(預設從高編號刪除,資料同步移除)
ALTER TABLE emp COALESCE PARTITION 3;

-- 新增 8 個分區
ALTER TABLE emp ADD PARTITION PARTITIONS 8;

四、分區對效能的實質增益與取捨

經實測與官方文檔綜合,分區優勢集中於:

  1. 突破單表/單磁碟容量上限,支援更大資料集;
  2. 歷史資料秒級歸檔/清理,DROP PARTITION 遠快於 DELETE;
  3. 分區裁剪:WHERE 條件命中分區鍵時,僅掃描相關分區,大幅降低 I/O;
  4. 聚合查詢並行化:SUM()、COUNT() 可跨分區並行執行,最後匯總;
  5. 跨磁碟分佈 I/O:將不同分區掛載至不同物理磁碟,提升吞吐。

參考深度分析:MySQL 分區效能實測

五、現有表遷移至分區表的標準流程

  1. 建立目標分區表結構;
  2. INSERT INTO ... SELECT ... 遷移資料(大表分批);
  3. 驗證資料一致性;
  4. 重命名表切換(RENAME TABLE 原子操作)。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved