分区表介绍
什么是分区表
在数据库管理中,随着业务的发展,单个表的数据量不断增长,导致查询性能逐渐下降,影响了业务的正常运行。例如,数据量的增加使得查询数据量随之增大,进而影响同一查询语句的执行性能。
TaurusDB通过继承开源社区的分区表功能,提供了一种有效的解决方案。TaurusDB能够为各分区定义不同的表空间属性,便于用户管理。分区表不仅能够实现物理隔离或性能优化,还能通过将大表划分为不同分区,并按照分区定义合理编写查询语句,保持查询性能的稳定。此外,分区表也是管理冷数据及控制其对查询性能影响的有效手段。将冷数据归档至特定分区,查询时仅扫描热分区数据,可有效避免冷数据带来的干扰。
二级分区
在数据库表中,可根据一个或多个字段的值将数据划分为不同的分区,这称为一级分区。二级分区(又称子分区)是在一级分区的基础上,进一步依据其他字段的值对每个一级分区内的数据进行细分的子分区。
通过二级分区,可以将数据表划分为更小、更易于管理的片段,从而提高数据的存储效率和查询性能。具体来说,二级分区有以下优势:
- 灵活的数据管理:通过二级分区,可以根据业务需求和数据特点灵活地定义分区策略,实现数据的按需存储和查询。
- 提高查询效率:由于二级分区将数据划分为更小的片段,因此,在查询时可以只扫描相关的分区,减少不必要的数据扫描,从而提高查询速度。
- 便捷的数据备份和恢复:通过二级分区,只需备份或恢复特定的分区,而不是整个数据表,节省备份和恢复所需的时间和空间。
二级分区表主要从维度角度进行设计。当一级分区的数据量增长到一定规模时,可以从另一个维度对其进行管理。例如,在销售情况表中,一级分区可按地区划分,二级分区可按年份进一步划分。如此,当需要查询某地某年的数据时,只需访问相应的二级分区,即可获得良好的查询性能。
二级分区结构图如下:
分区表的优点
- 高效的数据管理操作:支持在分区级别而非整个表上执行数据加载、索引创建与重建、备份和恢复等操作,大幅缩短管理耗时。
- 提升查询性能:通过仅访问目标分区而非全表,显著提升查询效率。分区裁剪技术可带来数量级的性能提升,有效减少无效 I/O 访问。
- 分区独立性:各分区维护操作相互独立,可在对部分分区执行维护的同时,保证其他分区的并发运行和 DML 操作不受影响。查询、DML 及 DDL 操作均支持并行执行。
- 提升系统可用性:将关键表和索引划分为分区后,可大幅缩减维护窗口,有效提高关键业务的数据库可用性。
- 无缝集成现有应用:无需对现有应用进行重写,即可充分利用分区表的优势。
- 简化数据生命周期管理:分区表提供更高效的数据生命周期管理能力,便于数据的维护和管理。
功能优化和性能增强
相对于原生MySQL, TaurusDB如下功能得到了优化,使用场景和性能得到了增强:
| 类型 | 优化项 | 参考文档 | |
|---|---|---|---|
| 扩展分区类型 | 支持全类型二级分区 | 支持HASH/KEY分区下面做二级分区 | |
| 二级分区支持RANGE/LIST类型 | |||
| LIST DEFAULT HASH分区类型 | 支持LIST DEFAULT HASH分区 | ||
| 支持LIST DEFAULT HASH分区下面做二级分区 | |||
| 二级分区支持LIST DEFAULT分区 | |||
| 支持通过reorganize从DEFAULT HASH分区分离出LIST分区 | |||
| 支持通过reorganize List分区合并到DEFAULT HASH分区 | |||
| 支持通过reorganize改变DEFAULT HASH分区的个数 | |||
| INTERVAL RANGE分区类型 | 支持INTERVAL RANGE分区 | ||
| Query优化 | 分区粒度MDL锁 | ADD/DROP PARTITION支持分区粒度的MDL锁 | |