本文将介绍如何为PolarDB-X 1.0中选择分片数(即水平拆分时的物理分表数)。

背景信息

PolarDB-X 1.0中的水平拆分包含了分库和分表两个层次。若您在创建数据库时,选择拆分模式为水平拆分,则PolarDB-X 1.0为默认为每个私有定制RDS实例创建8个物理分库,每个物理分库上可以创建一个或多个物理分表,而分表数通常也被称为分片数。

计算公式

一般情况下,建议单个物理分表的总容量范围在500万~5000万行数据(若单行记录超过4KB,建议总容量范围不超过500万),同时控制B+树的深度为3~4层。

您可以先预估1~2年内的数据增长量,用估算出的总数据量除以总的物理分库数,再除以建议的单个物理分表的最大数据量(本文以500万为例),即可得出每个物理分库上需要创建的物理分表数。

物理分库上的物理分表数=向上取整(估算的总数据量/(私有定制RDS实例数 x 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张物理分表即可。

  • 假设预估一张表在2年后的总数据量约为1亿行,但您只购买了1个私有定制RDS实例,那么按照分片数公式进行如下计算:
    物理分库上的物理分表数= CEILING(100,000,000 / ( 1 * 8 ) / 5,000,000) = CEILING(2.5) = 3

    结果为3,那么建议您既分库又分表,即需要在每个物理分库上再创建3张物理分表。