本文將介紹如何為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張物理分表。