| 策略 | 按时间范围分区最常见;哈希分区可用均衡写入 |
|---|---|
| 收益 | 查询裁剪、历史归档、批量清理更快 |
| 注意 | 唯一约束需包含分区键;跨分区查询成本仍在 |
按时间分区示例(MySQL 语法示意)
按时间分区示例(MySQL 语法示意)
ALTER TABLE orders PARTITION BY RANGE (TO_DAYS(created_at)) (
PARTITION p202601 VALUES LESS THAN (TO_DAYS('2026-02-01')),
PARTITION p202602 VALUES LESS THAN (TO_DAYS('2026-03-01')),
PARTITION pmax VALUES LESS THAN MAXVALUE
);
-- 归档历史:整体删除分区,避免逐行 DELETE
ALTER TABLE orders DROP PARTITION p202501;- 分区键要出现在高频查询条件里,才能触发分区裁剪
- 按周期滚动新建分区并归档旧分区,避免数据堆在默认分区
- 唯一约束(含主键)必须包含分区键,设计表时先确认
- 分区调整后校验统计信息与自动维护任务的执行情况
分区不是分库:单库分区上限与维护成本要评估,超大规模需要结合分片方案。