课程名称:如何处理数据热点问题
学习时长:30
课程收获:
- 场景分析
- 热点问题观测的方法
- 解决热点问题的方法
完美的场景
所有的请求都均匀的分配到每个数据上
热点问题定义
- 数据一小部分找过了远超于了其他部分的负载,不同维度的负载
- 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: