课程名称:课程版本(301)+ 3.7.8 How to Deal With Hotspot Issues(如何处理数据热点问题)
学习时长:
8分钟
课程收获:
掌握热点问题产生的场景和分析的方式,另外针对各种场景的热点问题,给出了解决的办法
课程内容:
-
场景分析
-
热点问题观测的方法
-
解决热点问题的方法
完美的场景
所有的请求都均匀的分配到每个数据上
热点问题定义
-
数据一小部分找过了远超于了其他部分的负载,不同维度的负载
- 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 的功能