本文將為您介紹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分區表 | |
分區分布位置 | 不同分區自動分布到不同的資料節點,實現單機資源的突破 | 所有分區必須在主節點,共用單機資源。 | |
支援分區策略 |
|
| |
支援分區函數 (詳細請參見分區函數) | HAHS/RANGE/LIST支援使用函數運算式進行定義,其中 與MySQL相容的分區函數如下
PolarDB-X特有的分區函數
| HAHS/RANGE/LIST支援使用分區函數運算式進行定義,其中MySQL分區表所允許使用的分區列的函數運算式,請參見MySQL分區函數列表。 MySQL分區表不支援使用字元類型輸入的分區函數,如 | |
雜湊分割策略 | HASH |
|
|
KEY |
|
| |
CO_HASH |
| 不支援CO_HASH。 | |
定界分割策略 | RANGE | 支援使用字元類型的分區函數,例如right/left/substr。詳情請參見RANGE分區。 | 不支援使用字元類型的分區函數,例如right/left/substr。 |
RANGE COLUMNS | 預設最多允許5個分區列進行分區定義,可調整參數。詳情請參見RANGE COLUMNS分區。 | 分區列數目不限制。 | |
列表分區策略 | LIST |
|
|
LIST COLUNNS |
|
| |
二級分區 | 組合策略 | 一級分區策略(7種)與二級分區策略(7種)的組合完全正交,組合分區策略種類達到49種。 |
|
模板化與非模板化 | 所有組合策略均支援模板化二級分區與非模板化二級分區兩種用法,詳情請參見二級分區。 |
| |
二級分區位置分布 |
| 不支援分區級Locality。 | |
分區級變更 |
| MySQL分區表支援以下分區定義的變更操作:
大部分的分區級變更均需要鎖表。 | |
分區表重定義 |
|
| |
分區列約束 | PolarDB-X分區表不要求主鍵、唯一鍵必須包含所有的分區列(包含一級分區與二級分區)。 | MySQL分區表要求主鍵、唯一鍵必須包含所有的分區列(包含一級分區與二級分區)。 | |
全域索引 |
| 不支援全域索引。 | |