课程名称:课程版本(301)+ 3.7.5 Partition Table(TiDB 的分表)
学习时长:
12分钟
课程收获:
分区表对于查询在性能方面有很大的提升和帮助
- 怎么使用分区表
- 分区表的内部原理
课程内容:
分区表根据规则将单个数据表拆分为多个表,拆分出来的表成为一个分区,分区和分区之间相互独立,但是上层的应用是透明的
在写入数据时,会根据分区的规则,将数据落入到相应分区
- range partition
- 通过分区表达的范围进行分区
- 分区的表达式可以是单个列,也是可以多个列组合
- 只支持整数范围(integer)
- 支持表达式,unix_timestamp,year等等
- 分区表达式的列,必须包含在所有的唯一索引中
- range columns partition
- tidb 只支持单个列
- 支持 整数(integer),字符串(String)和时间类型(datetime)
- Hash partition
- 根据表达式的值根据分区的数量取模来划分
- 单点查找和更新的时候,很容易找到数据
- 范围查询的时候,性能比较差
- 分区表达式中包含的列,必须包含在唯一索引中
range partition 适用场景
- 业务中需要大量的删除数据
- 数据是时间列,并且你需要对时间信息进行查询
- 小表和热点问题,可以帮助解决
Hash Partition 也支持表达式,但是结果必须是一个整数(integer)
Hash Partition 适用的场景
- 账户表,用户较多,可以根据用户的业务唯一标识,进行打散,将数据划分到多个分区中
- 时间类型的分布字段
- 小表有读热点,通过hash的分区方式,将热点打散进行分离