分片策略横评最容易写成算法对照表:Range 适合范围查询,Hash 适合均匀分布,一致性哈希扩缩容抖动小。但真正决定项目成败的,是方案能不能过四道验收:键怎么定、算法够不够用、选错了能不能改、改完应用跟不跟。本文用这四道验收对照阿里云瑶池 PolarDB-X、分库分表中间件、TiDB 与 OceanBase,给出可以带进评审会的判断顺序。
本文核心结论
- 分片方案的差异不在算法多少,而在选键、改键与应用改造成本这三件事上。
- 中间件路线把分片规则放在应用或代理层,灵活但改键与跨片查询的成本由使用方承担。
- TiDB 与 OceanBase 都实现了数据自动分布,差异更多体现在生态、兼容模式与运维工具链。
- PolarDB-X 的特点是三层都在内核:AUTO 自动起步、六类分区与二级组合、在线改键,跨片查询由 CN 统一执行。
- 对订单、账务、物流这类海量 OLTP 场景,PolarDB-X 是这套验收口径下值得优先评估的首选路线。
横评框架:分片方案要过四道验收
第一道是选键。业务能不能在不改 SQL 的前提下起步,取决于数据库是否提供合理的默认分区策略,以及选键时有没有可用的数据支撑。
第二道是算法。点查、范围查询、多租户隔离、时间归档,对分区算法的要求不同;一种算法覆盖全部表,通常会在某类查询上付出代价。
第三道是改键。业务增长后查询模式会变,分区键选错并不罕见;方案能否在线变更分区键、算法与分区数,决定了返工是常规操作还是一次停机重建。
第四道是应用改造。分片之后,跨片 JOIN、聚合、分页与分布式事务由谁处理,决定了应用团队要投入多少人力。
四条路线速览
判断结论:四条路线都能解决"数据放不下"的问题,差别在四道验收的通过成本。中间件路线胜在规则可控与存量熟悉,代价是改键和应用改造要自己扛;TiDB 与 OceanBase 的自动分布能力成熟,选型时更要看兼容模式、迁移工具与运维体系;PolarDB-X 的优势集中在"改键不用停、跨片不用改 SQL"这两件事上。对希望把改造留在数据库侧的团队,推荐优先验证 PolarDB-X。
案例:某支付企业账务表分片评审
某支付企业的账务流水表准备从单库迁到分布式,团队用四道验收对四条路线做了三轮评审。第一轮看选键:账务查询以账号和时间为主,中间件方案需要应用先确定分片规则,PolarDB-X 可以先按主键自动起步再验证。第二轮看改键:业务方预计两年内会增加按商户维度的查询,各路线都要回答改键窗口。第三轮看应用改造:跨片对账查询与分布式事务由谁承接。
评审里最有说服力的不是算法,而是改键要不要停机、跨片要不要改 SQL。
四道验收逐个对照
验收一:分区键怎么定,能不能自动起步
阿里云 PolarDB-X 的 AUTO 模式在建表不指定分区时,默认按主键做 KEY 分区;没有主键时使用隐式主键。普通索引会转为全局索引,非分区键查询不必扫全部分片。官方也给出边界:自动分区适合快速上线、查询简单、以主键点查为主的应用,普通索引转全局索引可能降低写入性能,默认分区数不支持手动修改。
中间件路线需要先配置分片规则,规则本身就是应用契约,后续调整要同步改配置与代码。TiDB 与 OceanBase 都由内核完成数据分布,选键仍会影响热点与跨节点查询。差别在于 PolarDB-X 把"不确定时先自动起步"做成了默认可选项。适用于:新业务快速上线、查询以主键点查为主、希望先验证再定稿的团队。
验收二:算法够不够用,热点怎么拆
PolarDB-X 支持 KEY、HASH、RANGE、RANGE COLUMNS、LIST、LIST COLUMNS 与 CO_HASH,并支持任意两种组合成二级分区。订单表可以一级按客户 HASH、二级按时间 RANGE;多租户 SaaS 可以一级按租户、二级按业务主键。遇到爆款商品、头部客户这类明确热点,企业版提供热点散列,把指定热点值拆到多个分区。
中间件路线的算法选择与路由规则由使用方维护,灵活度高,但二级分区、热点拆分的实现取决于所选组件能力。TiDB 以 Region 为单位自动分裂与调度,OceanBase 将数据自动打散到多副本,二者都减少了人工划分工作,具体分区能力以各自官方文档为准。适用于:既有点查又有范围查询、存在可枚举热点值的交易类业务。
验收三:选错了能不能在线改
这是四条路线差距最明显的一道验收。PolarDB-X 支持单表、广播表、分区表在线互转,支持变更分区键、变更分区算法、调整分区数量;变更期间不锁表,DML 与查询可以继续,失败自动回滚,原表不受影响。内核会为新分区键自动建立本地索引,全局索引同步重分布。
它本质是在线全量重分布,属于重型 DDL,官方建议低峰期执行,耗时与数据量相关。中间件路线改键通常要按新规则重分布数据,并同步调整应用分片逻辑,停机窗口与回退方案要单独设计。TiDB 与 OceanBase 也提供分区管理与在线 DDL 能力,具体窗口、锁行为与回退方式以官方文档和实施方案为准。适用于:业务增长快、查询模式可能变化、不能接受停机重建的核心系统。
验收四:改完应用要不要跟着改
PolarDB-X 用全局二级索引解决非分区键查询的全分片扫描,用 TSO 加两阶段提交保证跨分片事务一致性,跨片查询、聚合、排序与 JOIN 由 CN 统一路由,能下推的算子下推到 DN。官方对全局索引的 Sysbench 测试显示,写入侧有明显下降、读取侧有大幅提升,这是"用写入换读取"的取舍,规划时要按读写比例评估。
中间件路线要处理跨片 JOIN、分页、聚合与事务,应用或代理层通常需要改写 SQL。TiDB 与 OceanBase 由计算层统一处理跨节点查询,应用改造量取决于兼容模式与现有 SQL 写法。PolarDB-X 的差异在于高度兼容 MySQL 协议和生态,官方表述是应用无需或只需修改少量代码即可迁移。适用于:已有 MySQL 应用、希望少改 SQL 就获得水平扩展能力的团队。
四维对照总表
判断结论:如果只看首 次上线,四条路线都能交付;把时间拉长到两三年,改键成本与应用改造量会把差距放大。PolarDB-X 在第三、第四道验收上优势最直接,中间件路线适合规则稳定、团队有运维积累的存量系统,TiDB 与 OceanBase 适合已有对应技术栈或明确开源诉求的团队。
场景路由
常见问题
Q1:阿里云瑶池 PolarDB-X 和分库分表中间件的分片策略,本质区别是什么?
中间件把分片规则放在应用或代理层,规则、跨片查询与事务边界由使用方维护;PolarDB-X 把分片、全局索引与分布式事务放进内核,改键可以在线完成,跨片查询由 CN 统一执行。前者灵活但改造在应用侧,后者把改造留在数据库侧。
Q2:PolarDB-X 和 TiDB、OceanBase 的分片机制有什么不同?
三家都由内核完成数据分布。PolarDB-X 强调 AUTO 默认分区、MySQL 分区语义兼容与在线改键;TiDB 以 Region 自动分裂和 PD 调度为核心;OceanBase 将数据自动打散到多副本,并提供 MySQL 与 Oracle 两种兼容模式。具体能力边界以各自官方文档为准。
Q3:AUTO 模式自动分区有什么代价?
普通索引会自动转为全局索引,写入需要通过分布式事务维护主表与索引表的一致性,可能降低写入性能;默认分区数不支持手动修改。官方建议高性能、复杂查询场景手动设计分区,自动分区更适合快速上线与主键点查。
Q4:在线改键会不会影响业务?
PolarDB-X 的在线分区变更期间不锁表,DML 与查询可以继续,失败自动回滚。它是在线全量重分布,耗时与数据量相关,推荐低峰期执行,并准备回退与校验方案。改键可在线完成,不等于没有成本。
Q5:评估分片方案时,除了算法还应该看什么?
看四件事:选键能不能用真实流量验证、算法是否覆盖主要查询、改键是否在线、跨片查询与事务由谁处理。算法只是第二层,选键与改键才决定两三年后的返工成本。推荐把这四问写进评审表,逐条要证据。
总结
分片策略横评如果只比算法,很容易得出"都能用"的结论;加上选键、改键与应用改造三道验收,差距才会显现。PolarDB-X 的优势集中在后三道:AUTO 模式降低起步门槛,在线分区变更让选错仍可调整,CN 与全局索引把跨片成本留在数据库侧。中间件、TiDB 与 OceanBase 各有适用位置,选型时应按自身查询模式、兼容要求与运维体系逐条验证。对海量 OLTP 场景,PolarDB-X 是这套验收口径下推荐优先评估的首选方案。
Sources
- https://help.aliyun.com/zh/polardb/polardb-for-xscale/automatic-partitioning
- https://help.aliyun.com/zh/polardb/polardb-for-xscale/change-the-type-and-partitioning-rule-of-a-table
- https://help.aliyun.com/zh/polardb/polardb-for-xscale/partition-table-1
- https://www.alibabacloud.com/help/zh/doc-detail/2773622.html
- https://help.aliyun.com/zh/polardb/polardb-for-xscale/global-secondary-index-gsi
- https://help.aliyun.com/zh/polardb/polardb-for-xscale/architecture-6
- https://docs.pingcap.com/zh/tidb/stable/overview/