PolarDB分区表完全兼容原生MySQL的语法和功能。同时,PolarDB分区表相对于原生MySQL进行了性能增强,支持丰富的分区类型及组合,使您可以更加便捷、简单和高效的使用分区表。
分区表是将一个大的逻辑表,按照分区规则分割成多个小的物理表, 大的逻辑表为分区表,小的物理表为分区,每一个分区在存储引擎上独立组织管理数据和索引。分区规则主要包括RANGE、LIST、HASH三种,您需要指定分区键, 根据分区键字段的值按照这三种规则把数据划分到不同的分区。PolarDB还支持创建混合分区,可以将每个分区放在不同的存储引擎上。Orders表做二级分区的示意图如下:
优势
丰富的分区类型及组合。
支持RANGE、LIST、HASH和LIST DEFAULT HASH分区及其分区的任意组合,使得分区表具有更加灵活的数据分治能力。
支持INTEVAL RANGE分区,让分区运维自动化更加简单高效。
支持INNODB和OSS混合分区,助力您的业务降本增效。
支持在不同分区下创建不同的索引(Partial index)及全局二级索引(Global Secondary Index),更好的满足基于分区的HTAP交易和查询负载对表索引的不同要求。
提升性能。
分区剪枝(Partition Pruning):在查询数据时,优化器会根据查询条件和分区元数据自动过滤不符合条件的分区,减少数据扫描,PolarDB还支持分区动态剪枝(Partition Dynamic Pruning)功能,帮助您提升查询效率。
分区连接(PartitionWise Joins):在连接分区时,根据分区条件将分区表打散成分区与分区之间的连接,过滤不符合条件的分区之间的连接,把连接的数据控制在最小范围内,提高查询效率。
统计信息管理:相比普通表,以分区粒度进行的信息统计和管理,更加精确和灵活,从而支持选择更优的查询计划。
支持并行查询加速,为基于分区的大表方案提供成倍性能提升。
加强数据管理能力。
索引创建、删除和重建:以分区为单位进行索引的创建、删除和重建。
备份和恢复: 以分区粒度进行数据备份和恢复。
降低成本。
分区可以根据数据重要性、数据存储性能、数据存储可靠性和数据存储形式多种维度进行存储。
功能优化和性能增强
相对于原生MySQL,PolarDB如下功能得到了优化,性能得到了增强:
类型 | 优化项 | 相关文档 | |
扩展分区类型 | 支持全类型二级分区 | 支持HASH/KEY分区下面做二级分区 | |
二级分区支持RANG/LIST类型 | |||
支持二级分区的Partition Pruning | |||
支持二级分区粒度上的部分DDL操作 | |||
List Default [Hash]分区类型 | 支持List Default [Hash]分区 | ||
支持List Default [Hash]分区下面做二级分区 | |||
二级分区支持List Default分区 | |||
支持通过reorganize从default [Hash]分区分离出List分区 | |||
支持通过reorganize List分区合并到default [Hash]分区 | |||
支持通过reorganize改变default hash分区的个数 | |||
支持List default Hash分区的Partition Pruning | |||
支持List Default Hash分区、ONLINE ADD List分区 | |||
Interval Range分区类型 | 支持Interval Range分区 | ||
Interval Range支持Hash二级分区 | |||
支持分区索引 | 部分索引(Partial Index) | Partial Index支持一级分区 | |
Partial Index支持二级分区 | |||
支持一级/二级分区粒度的索引DDL操作(ADD/DROP/REBUILD Index) | |||
支持Partial Index的Index Pruning | |||
统计信息支持Partial Index | |||
Hybrid Partition表支持 Partial Index | |||
List Default Hash分区支持Partial Index | |||
全局二级索引(Global Secondary Index) | 支持CREATE/DROP全局二级索引 | ||
支持DML和大部分表级的DDL | |||
支持全局二级索引的Online DDL | |||
支持unique的全局二级索引 | |||
Query优化 | 查询优化器 | 支持Partial Partition Wise join | 无 |
支持Partition动态剪枝 | |||
支持Partition Index Pruning | |||
支持分区粒度的统计信息(Hyperloglog) | |||
分区表支持分区间的并行扫描 | |||
支持全局索引优化器选择和并行扫描 | |||
支持分区与MPP相结合 | |||
分区粒度MDL锁 | ADD/DROP PARTITION支持分区粒度的MDL锁 | ||
EXCHANGE PARTITION支持分区粒度的MDL锁 | |||
REBULD/REORGANIZE PARTITION支持分区粒度的MDL锁 | |||
二级分区支持子分区粒度的MDL锁 | |||
DDL功能 | 普通表与分区表的ONLINE DDL | 普通表转分区表ONLINE DDL用于历史数据转Range分区表 | |
Hybrid Partition | 支持不同类型的存储引擎 |