全部產品
Search
文件中心

:PolarDB-X AUTO模式資料庫分區表概述

更新時間:Feb 19, 2025

本文將為您介紹PolarDB-X分區表的定義、優勢以及與MySQL分區表的差異。

PolarDB-X的AUTO模式資料庫中,將資料量較大的邏輯表依據特定的分區規則切割成若干個較小的物理表,此時大的邏輯表稱為分區表,每個小的物理表稱作為分區表的一個分區。PolarDB-X提供了一系列靈活的分區策略,包括KEY、HASH、RANGE、LIST和COHASH,這些規則還可以靈活組合,形成二級分區策略。這樣的設計不僅實現了資料的高效管理,也使得分區策略與MySQL的分區文法保持了高度的相容性,為使用者提供了便捷和熟悉的操作體驗。

PolarDB-X還為分區表提供了一系列便捷的營運管理能力,包括支援分區的分裂、合并、遷移調度等功能。能夠實現靈活的資料管理,例如可以將特定分區的資料隔離至獨立的儲存節點,或將較大的分區細分為多個小的分區等,提升資料處理的靈活性和效率。

優勢

  • 支援RANGE、RANGE COLUMN、KEY、LIST、LIST COLUMN和COHASH分區及其分區的任意組合二級模板化分區或者二級非模板化分區,使得分區表具有更加靈活的資料分治能力。

  • 支援在分區表上建立全域二級索引(Global Secondary Index),更好地滿足對分區表進行不同維度查詢的索引要求。

  • 支援分區剪枝(Partition Pruning),在查詢資料時,最佳化器會根據查詢條件和分區中繼資料自動過濾不合格分區,減少資料掃描。

  • 分區串連(PartitionWise Joins),在串連分區時,根據分區條件將分區表打散成分區與分區之間的串連,過濾不合格分區之間的串連,把串連的資料控制在最小範圍內,提高查詢效率。

  • 支援並行查詢加速,為基於分區的大表方案提供成倍的效能提升。

  • 支援靈活的分區調度管理,方便對不同分區資料進行隔離。

與MySQL分區表的差異

對比項

PolarDB-X分區表

MySQL分區表

分區分布位置

不同分區自動分布到不同的資料節點,實現單機資源的突破

所有分區必須在主節點,共用單機資源。

支援分區策略

  • HASH/KEY

  • RANGE/RANGE COLUMNS

  • LIST/LIST COLUMNS

  • CO_HASH(PolarDB-X特有的分區策略)

  • HASH/KEY

  • RANGE/RANGE COLUMNS

  • LIST/LIST COLUMNS

支援分區函數

(詳細請參見分區函數

HAHS/RANGE/LIST支援使用函數運算式進行定義,其中

與MySQL相容的分區函數如下

  • YEAR

  • MONTH

  • TO_DAYS

  • TO_SECONDS

  • UNIX_TIMESTAMP

  • DAYOFWEEK

  • DAYOFMONTH

  • DAYOFYEAR

PolarDB-X特有的分區函數

  • TO_MONTHS

  • TO_WEEKS

  • SUBSTR/SUBSTRING(標準的MySQL函數,詳情請參見MySQL SUBSTR

  • RIGHT(標準的MySQL函數,詳情請參見MySQL RIGHT

  • LEFT(標準的MySQL函數,詳情請參見MySQL LEFT

HAHS/RANGE/LIST支援使用分區函數運算式進行定義,其中MySQL分區表所允許使用的分區列的函數運算式,請參見MySQL分區函數列表

MySQL分區表不支援使用字元類型輸入的分區函數,如SUBSTRSUBSTRINGRIGHTLEFT

雜湊分割策略

HASH

  • 使用一致性雜湊路由演算法。

  • 支援向量分區列,例如Partition By Hash(a,b),詳情請參見HASH分區

  • 使用雜湊模數的路由演算法。

  • 不支援向量分區列,例如:Partition By Hash(a,b)

KEY

  • 使用一致性雜湊路由演算法。

  • 支援向量分區列(預設第1個列參與路由計算),詳情請參見KEY分區

  • 支援熱點散列。

  • 支援首碼分區列等值條件的分區裁剪。

  • 使用雜湊模數的路由演算法。

  • 支援使用向量分區列(所有列同時參與路由計算)。

  • 無法熱點散列。

  • 不支援首碼分區列等值條件的分區裁剪,必須攜帶所有有分區列的等值條件才能分區裁剪。

CO_HASH

  • PolarDB-X的特有分區策略,詳情請參見CO_HASH分區

  • 支援同時按兩個或多個分區列進行水平資料分割

  • 各個分區列等值查詢均支援分區裁剪

不支援CO_HASH。

定界分割策略

RANGE

支援使用字元類型的分區函數,例如right/left/substr。詳情請參見RANGE分區

不支援使用字元類型的分區函數,例如right/left/substr。

RANGE COLUMNS

預設最多允許5個分區列進行分區定義,可調整參數。詳情請參見RANGE COLUMNS分區

分區列數目不限制。

列表分區策略

LIST

  • 支援定義Default分區。

  • 支援字元類型的分區列。

  • 支援使用字元類型的分區函數,比如,RIGHT/LEFT/SUBSTR。

  • 支援單獨對List分區值的集合進行修改。

  • 詳情請參見LIST分區

  • 不支援定義Default分區。

  • 不支援字元類型的分區列。

  • 不支援使用字元類型的分區函數,例如RIGHT/LEFT/SUBSTR。

  • 無法對單個List分區值的集合進行修改。

LIST COLUNNS

  • 支援定義Default分區。

  • 支援單獨對List Columns分區值的集合進行修改。

  • 詳情請參見LIST COLUMNS分區

  • 不支援定義Default分區。

  • 無法對單個List Columns分區值的集合進行修改。

二級分區

組合策略

一級分區策略(7種)與二級分區策略(7種)的組合完全正交,組合分區策略種類達到49種。

  • Hash/Key分區策略不允許定義二級分區。

  • Range/RangeColumns/List/List Columns共4種分區策略允許定義二級分區,但二級分區策略必須是Hash或Key。

  • 組合分區策略數目是8種。

模板化與非模板化

所有組合策略均支援模板化二級分區與非模板化二級分區兩種用法,詳情請參見二級分區

  • 所有組合策略只支援模板化二級分區的用法。

  • 不支援非模板化二級分區。

二級分區位置分布

  • 支援分區級Locality。

  • 允許通過指定二級分區的Locality的定義,以控制單個二級分區的物理位置的分布。

  • 允許通過指定一級分區的Locality定義,統一控制各一級分區之下的二級分區的物理位置的分布。例如可以讓同一個一級分區下的二級分區都分布在同一個資料節點等等。

不支援分區級Locality。

分區級變更

  • PolarDB-X分區表(含二級分區)支援以下的分區定義的變更操作:

    • 分裂分區

    • 合并分區

    • 遷移分區

    • 增加分區

    • 刪除分區

    • 修改分區

    • 重組分區

    • 清空分區

    • 重新命名分區

  • 所有分區營運變更均是Online DDL,不會鎖表。

MySQL分區表支援以下分區定義的變更操作:

  • 合并分區

  • 重組分區

  • 增加分區

  • 刪除分區

  • 清空分區

  • 交換分區

大部分的分區級變更均需要鎖表。

分區表重定義

  • 支援將分區表與單表、廣播表之間進行Online互換(需遷移資料)。

  • 分區表重定義操作是Online DDL,不會鎖表。

  • 可通過Remove Partitioning實現分區表與原單表的切換。

  • 分區表重定義過程需要鎖表。

分區列約束

PolarDB-X分區表不要求主鍵、唯一鍵必須包含所有的分區列(包含一級分區與二級分區)。

MySQL分區表要求主鍵、唯一鍵必須包含所有的分區列(包含一級分區與二級分區)。

全域索引

  • 支援全域索引表使用分區表定義。

  • 支援對全域索引表的分區進行單獨營運變更。

不支援全域索引。