分区与分片配置
本指南介绍如何针对海量数据与分布式架构,配置表级分区策略(Partitioning)与分布式分片(Sharding)。
适用场景
适用于日志流水、历史订单、时序数据等千万级大表的生命周期管理与查询提效,或使用 PostgreSQL Citus 进行分布式水平扩展的业务系统。
核心配置指引
1. MySQL / MariaDB / TiDB 表分区配置
当数据库类型选为 MySQL、MariaDB 或 TiDB 时,配置区将展示“分区配置”标签页:
- 勾选启用分区开关。
- 选择分区类型:
- RANGE / RANGE COLUMNS:按数值范围或日期区间分区(如按年份划分订单表)。支持点击“按年”、“按月”、“按日”一键生成快捷分区定义。
- LIST / LIST COLUMNS:按离散枚举值集合分区(如按地区、业务类型划分)。
- HASH / KEY:通过哈希算法将数据均匀分散到指定数量的分区中,需指定分区字段与分区数量。
- 设置分区表达式与定义:录入字段名或表达式(如
YEAR(created_at)),并完善各分区的边界值。 - 右侧 DDL 将实时生成对应的
PARTITION BY ...完整子句。
2. PostgreSQL Citus 分布式分片配置
当数据库类型选为 PostgreSQL (Citus) 时,配置区将展示“分片配置”标签页:
- 选择表模式:
- 副本表(Reference Table):在所有分布式节点全量复制的小字典表或配置表,适用于与大表进行本地关联查询。
- 分片表(Distributed Table):水平切分的海量业务大表,必须指定核心分片键(Distribution Column)(如
tenant_id或user_id)。
- 右侧输出区将自动追加 Citus 专属的
SELECT create_reference_table('table_name');或SELECT create_distributed_table('table_name', 'shard_key');部署语句。
校验与完成标志
- [ ] 对应方言下已正确渲染“分区配置”或“分片配置”面板。
- [ ] 分区键/分片键与业务最高频的过滤条件、JOIN 关联条件保持一致,避免跨分区分片扫描。
- [ ] 右侧 DDL / SQL 准确输出完整且合规的分区与分片语句。
常见注意事项
主键与唯一索引约束
在 MySQL / PostgreSQL 分区表中,所有主键和唯一索引的字段集合必须包含分区键,否则数据库在建表时会抛出语法错误。
- 方言入口可见性:若未看到“分区配置”或“分片配置”,请检查顶部数据库类型是否正确切换为支持该特性的方言。
- 避免过度分区:分区会增加元数据管理开销,数据量较小(未达到百万级以上)时建议先使用常规普通表。