【TiDB 4.0 PCTA 学习笔记】- 3.7.5 Partition Table(TiDB 的分表)@1班:魔幻之翼

课程名称:课程版本(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的分区方式,将热点打散进行分离