开发者社区 问答 正文

如何选择分片数

DRDS 中的水平拆分有两个层次:分库和分表。每个 RDS 实例上默认会创建8个物理分库,每个物理分库上可以创建一个或多个物理分表。分表数通常也被称为分片数。

一般情况下,建议单个物理分表的容量不超过500万行数据。通常可以预估1到2年的数据增长量,用估算出的总数据量除以总的物理分库数,再除以建议的最大数据量500万,即可得出每个物理分库上需要创建的物理分表数:

物理分库上的物理分表数 = 向上取整(估算的总数据量 / (RDS 实例数 * 8) / 5,000,000)
因此,当计算出的物理分表数等于1时,分库即可,无需再进一步分表,即每个物理分库上一个物理分表;若计算结果大于1,则建议既分库又分表,即每个物理分库上多个物理分表。

例如,某用户预估一张表在2年后的总数据量大概是1亿行,购买了4个 RDS 实例,那么按照上述公式计算:

物理分库上的物理分表数 = CEILING(100,000,000 / ( 4 * 8 ) / 5,000,000) = CEILING(0.625) = 1
结果为1,那么只分库即可,即每个物理分库上1个物理分表。

若上述例子中仅购买了1个 RDS 实例,那么按照上述公式计算:

物理分库上的物理分表数 = CEILING(100,000,000 / ( 1 * 8 ) / 5,000,000) = CEILING(2.5) = 3
结果为3,那么建议既分库又分表,即每个物理分库上3个物理分表。

展开
收起
猫饭先生 2017-10-30 13:54:48 1732 分享 版权
阿里云 AI 助理回答

您的理解是正确的。根据阿里云分布式关系型数据库服务(DRDS)的分库分表设计原则,确实需要根据业务数据量的预估增长来合理规划分库和分表的数量,以确保系统的扩展性和性能。

在您给出的例子中,当用户预计两年后数据量达到1亿行,并且购买了4个RDS实例时,计算结果显示每个物理分库上仅需1个物理分表,意味着在这种配置下,通过分库已经足够支撑预估的数据量,无需进一步的分表操作。这是因为4个RDS实例乘以每个实例上的8个物理分库,总共32个分库,足以分散1亿行数据,每个分库平均下来的数据量远低于500万行的建议上限。

而当只购买1个RDS实例时,情况就不同了。此时,只有8个物理分库可用,按照同样的数据量预估,每个物理分库需要承载的数据量将超过500万行的推荐值,因此计算结果提示需要在每个物理分库上创建3个物理分表,即既进行分库也进行分表,以保证每个分表的数据量控制在合理的范围内,从而维持查询效率和系统性能。

总结来说,是否需要在分库的基础上进一步分表,取决于总的RDS实例数量、每个实例的物理分库数以及预估的数据总量,目的是确保数据分布均匀,避免单个分片上的数据量过大影响性能。您的计算方法和结论准确地反映了这一决策过程。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答