全部产品
云市场

如何选择分片数

更新时间:2019-12-26 17:34:37

数据访问代理在创建数据库时,提供了分片数的概念。分库分表中的分库是一个逻辑上的概念,物理上可能是一个物理数据库代表一个“分库”,也可能是多个物理数据库组成一个“分库”,在数据访问代理里面统一概念称 “分片”。

选择分片数原则

分片数决定了数据访问代理数据库数的逻辑最大值,创建后无法修改。一般情况下,建议分片数和分表数保持一致,根据业务 3 到 5 年内的数据量设置一个较大值(如设置为 128),这样在做数据库扩容与迁移的时候,无需修改路由规则,以表为单位做整体的数据迁移操作即可。

场景分析

如果某用户分片数设置较小(假设设置分片数大小为 8),业务发展前期只购买了 2 个物理数据库实例,分片数为 8 则每个物理数据库实例均匀的存放了 4 个分片,结构如下:

2 db

随着业务规模快速发展,两个物理数据库实例已经不能够满足业务要求,该用户决定扩展成 4 台,那么每台物理数据库实例应该存放了 2 个分片,通过数据访问代理进行数据平滑迁移后,结构如下:

4 db

后续业务规模继续发展,最终也只能将物理数据库实例扩展为 8 台,通过数据访问代理进行数据平滑迁移后,结构如下:

8 db

如果扩展需要超过 8 台的话,数据迁移过程所有数据需要重新分配,涉及到的数据迁移工作会比较复杂,而且对应的分库分表规则脚本、业务代码中的自定义路由 HINT 也需要一起调整,成本较高且无法完全平滑迁移。

所以建议在业务设计之初,为了满足业务 3 到 5 年内的数据库容量,合理的选择一个较大的分片数的值。