【TiDB 4.0 PCTA 学习笔记】 - 3.7.5 Partition Table @2班+马志林

课程名称:【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