分區建立後,全生命週期管理同樣關鍵。本文系統梳理各分區類型的 NULL 語義、DDL 操作語法、重組策略,並深度剖析分區對查詢效能的實質影響。
| 分區類型 | NULL 處理規則 |
|---|---|
| RANGE | 視為最小值,歸入首個分區 |
| LIST | 必須顯式枚舉於 VALUES IN,否則報錯 |
| HASH/KEY | 視為 0 參與雜湊計算 |
ALTER TABLE emp DROP PARTITION p0;
-- RANGE:只能加在最大值之後 ALTER TABLE emp ADD PARTITION (PARTITION p5 VALUES LESS THAN (5000)); -- LIST:不可與現有分區枚舉值重疊 ALTER TABLE emp ADD PARTITION (PARTITION p5 VALUES IN (11,12));
-- 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 不互通)。
-- 创除 3 個分區(預設從高編號刪除,資料同步移除) ALTER TABLE emp COALESCE PARTITION 3; -- 新增 8 個分區 ALTER TABLE emp ADD PARTITION PARTITIONS 8;
經實測與官方文檔綜合,分區優勢集中於:
DROP PARTITION 遠快於 DELETE;SUM()、COUNT() 可跨分區並行執行,最後匯總;參考深度分析:MySQL 分區效能實測
INSERT INTO ... SELECT ... 遷移資料(大表分批);RENAME TABLE 原子操作)。