本文介绍了分区表的定义及优势。
在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分区表要求主键、唯一键必须包含所有的分区列(包含一级分区与二级分区)。 | |
全局索引 |
| 没有全局索引。 |