5月30日 19:40
MariaDB 分区表有哪些类型?如何创建和维护?
MariaDB 分区表适合处理持续增长、访问模式明确的大表,比如日志、订单、流水。它不是把业务拆成多张表,而是在一张逻辑表下面按规则拆出多个物理分区;查询仍写同一张表名,优化器在条件命中分区键时可以做分区裁剪。分区能降低历史数据维护成本,也能减少部分扫描范围,但不能替代索引。
追问
MariaDB 分区表有哪些类型?
常见类型有 RANGE、LIST、HASH 和 KEY。RANGE 适合按时间、ID 区间切分;LIST 适合地区、业务状态;HASH/KEY 主要用来均匀打散。
RANGE、LIST、HASH、KEY 应该怎么选?
查询经常带 created_at、biz_date 时优先 RANGE;固定枚举隔离用 LIST;没有明显范围条件但要拆散数据时考虑 HASH/KEY。
创建分区表最容易踩什么坑?
主键和唯一键通常必须包含分区键,否则可能建表失败或唯一性语义不符合预期。分区键不出现在查询条件里,收益也会很有限。
历史分区怎么维护?
RANGE 分区通常提前创建未来分区。删除历史数据时,DROP PARTITION 比大批量 DELETE 更快,但它是物理删除,归档前要先备份。
怎么确认查询真的用到了分区?
用 EXPLAIN PARTITIONS 看 partitions 字段,确认只访问目标分区,而不是全分区扫描。
写段 SQL
sqlCREATE TABLE orders (id BIGINT, created_at DATE, PRIMARY KEY(id, created_at)) PARTITION BY RANGE (TO_DAYS(created_at)) ( PARTITION p202401 VALUES LESS THAN (TO_DAYS('2024-02-01')), PARTITION pmax VALUES LESS THAN MAXVALUE);