Skip to content

分区与分片配置

本指南介绍如何针对海量数据与分布式架构,配置表级分区策略(Partitioning)分布式分片(Sharding)

适用场景

适用于日志流水、历史订单、时序数据等千万级大表的生命周期管理与查询提效,或使用 PostgreSQL Citus 进行分布式水平扩展的业务系统。


核心配置指引

1. MySQL / MariaDB / TiDB 表分区配置

当数据库类型选为 MySQLMariaDBTiDB 时,配置区将展示“分区配置”标签页:

  1. 勾选启用分区开关。
  2. 选择分区类型
    • RANGE / RANGE COLUMNS:按数值范围或日期区间分区(如按年份划分订单表)。支持点击“按年”、“按月”、“按日”一键生成快捷分区定义。
    • LIST / LIST COLUMNS:按离散枚举值集合分区(如按地区、业务类型划分)。
    • HASH / KEY:通过哈希算法将数据均匀分散到指定数量的分区中,需指定分区字段与分区数量。
  3. 设置分区表达式与定义:录入字段名或表达式(如 YEAR(created_at)),并完善各分区的边界值。
  4. 右侧 DDL 将实时生成对应的 PARTITION BY ... 完整子句。

2. PostgreSQL Citus 分布式分片配置

当数据库类型选为 PostgreSQL (Citus) 时,配置区将展示“分片配置”标签页:

  1. 选择表模式
    • 副本表(Reference Table):在所有分布式节点全量复制的小字典表或配置表,适用于与大表进行本地关联查询。
    • 分片表(Distributed Table):水平切分的海量业务大表,必须指定核心分片键(Distribution Column)(如 tenant_iduser_id)。
  2. 右侧输出区将自动追加 Citus 专属的 SELECT create_reference_table('table_name');SELECT create_distributed_table('table_name', 'shard_key'); 部署语句。

校验与完成标志

  • [ ] 对应方言下已正确渲染“分区配置”或“分片配置”面板。
  • [ ] 分区键/分片键与业务最高频的过滤条件、JOIN 关联条件保持一致,避免跨分区分片扫描。
  • [ ] 右侧 DDL / SQL 准确输出完整且合规的分区与分片语句。

常见注意事项

主键与唯一索引约束

在 MySQL / PostgreSQL 分区表中,所有主键和唯一索引的字段集合必须包含分区键,否则数据库在建表时会抛出语法错误。

  • 方言入口可见性:若未看到“分区配置”或“分片配置”,请检查顶部数据库类型是否正确切换为支持该特性的方言。
  • 避免过度分区:分区会增加元数据管理开销,数据量较小(未达到百万级以上)时建议先使用常规普通表。