课程名称:(301)3.7.5 Partition Table(TiDB 的分表)
学习时长:15min
课程收获:掌握分区表的种类以及使用方法,以及了解分区裁剪的原理
课程内容:分区表、分区裁剪
range partition:可以按单个列进行分区,或按多个列的组成的函数进行分区;less than + 整型;分区表达式包含的列必须包含在唯一索引中
适用场景:需要按范围删除数据,删除数据变成删除分区;数据有时间列,并且需要按照时间范围查询;小表有读热点,可以使用分区来解决热点
range columns partition :只支持单个列作为range表达式;支持按整型,字符串,时间进行分区
hash partition:单点查询性能高,范围查询性能差;分区表达式包含的所有列,必须包含在所有唯一 索引中;NULL值默认会被划分到第0个分区;表达式分区必须返回整型
用于单点查询,范围查询会导致全表扫描;可解决小表读热点
分区表内部原理
分区裁剪:通过不扫描不匹配的分区来达到优化;不好的SQL会导致分区裁剪失败,导致全表扫描
范围分区的裁剪
哈希分区裁剪:优化器需要了解分区表达式中所有列的值;需要指定具体值,不能只指定范围值
分区裁剪发生在优化器逻辑优化阶段,一些运行时才能得到结果的条件并不能作为分区裁剪的条件
学习过程中遇到的问题或延伸思考:
- 问题 1:
- 问题 2:
- 延伸思考 1:
- 延伸思考 2:
学习过程中参考的其他资料
无