课程名称:【TiDB 4.0 PCTA 学习笔记】 - 3.7.5 Partition Table (TiDB 的分表)
学习时长:20m
课程收获:
学习分区表的种类以及使用方法,以及了解分区裁剪的原理
课程内容:
一、分区表的使用
1、分区表通过一些规则将一张表拆成多个表,被查出来的每个表被称为分区,表间相互独立,对上层应用透明。在数据查询和写入时,会根据规则查询和写入相应的分区。可以通过table_id 操作选定的分区。
TiDB 支持 range \range columns \ hash
2、range分区表
通过分区表达式的范围进行分区,可以是单列,也可以是多列组成的分区函数。
range只能划分整数范围,所选列必须要在所有的唯一索引中。
3、range columns
只支持单列,支持字符串和时间
4、hash分区表
范围查询比上述慢,单条查询比上述快。
索引所选列必须要在所有的唯一索引中。
支持表达式作为分区键,但表达式结果必须是整数
适用:数量量大,无特征字段,可以用int类型的uid进行分区
二、分区表的原理
1、分区裁剪
优化器根绝不通条件选择不同的分区
range分区,优化器会根据分区字段的范围,进行推导
分区表达式中有函数 (非单调函数)则会推导失败,全表扫描
hash分区,优化器先hash列值,在进行推导。
范围查询无效。
2、运行时才会得到结果的条件,不能作为分区裁剪的条件
tidb 5.0 将支持 index join