【TiDB 4.0 PCTA 学习笔记】- 3.7.8 How to Deal With Hotspot Issues(如何处理数据热点问题)@2班+王维

课程名称:如何处理数据热点问题

学习时长:30

课程收获:

  1. 场景分析
  2. 热点问题观测的方法
  3. 解决热点问题的方法

完美的场景

所有的请求都均匀的分配到每个数据上

热点问题定义

  • 数据一小部分找过了远超于了其他部分的负载,不同维度的负载
    • kps
    • 数据流量
    • 请求带来cpu消耗
  • tidb 底层机制的限制,导致数据过热
  • tidb 本身也包含了热点消除的功能,能够通过PD 将 Region 均衡的分配到 tikv 的节点上

顺序写导致热点问题

  • 业务模式有关
    • 不停的追加数据
    • 索引值是递增或者递减的关系
  • auto_increment
    • rowid 的属性,顺序写入
  • 新建的表插入数据
    • 新创建的表只有 1个 region,需要经过一段时间进行调度后,才会成为多个region分布的情况

热点小表

  • 特别小的数据被频繁访问
  • 高并发的查询
    • 通常是读请求,直接采用range scan
    • 较多的使用表达式
  • 使用了下推计算

region 分布偏斜

  • 中等数据规模的表,容易发现偏斜
  • regions在同一个tikv 的实例上
  • 读写热点都存在
    • range scans
    • 高并发随机 插入 / 更新

解决热点问题的方法

  • 分区表
    • hash partition
    • 有效解决写热点
  • shard_row_id_bits
    • 解决row_id 顺序写的问题,采用随机的方式
    • 或者采用配置的方式
  • pre-split region
    • 解决写热点问题、
    • 效果最好
    • 能够主动发起调度
    • 需要提前划分数据范围
  • followe read
    • 解决读热点
  • scatter range
    • 解决region偏斜的方案
  • shuffle leader / region
    • 解决region 偏斜的极端手段
    • 随机启用移动region 的功能

课程内容:

学习过程中遇到的问题或延伸思考:

  • 问题 1:
  • 问题 2:
  • 延伸思考 1:
  • 延伸思考 2:

学习过程中参考的其他资料