本文介紹了分區表的定義及優勢。
在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分區表不支持使用字符類型輸入的分區函數,例如:
| |
哈希分區策略 | HASH |
|
|
KEY |
|
| |
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分區表要求主鍵、唯一鍵必須包含所有的分區列(包含一級分區與二級分區)。 | |
全局索引 |
| 沒有全局索引。 |