读热点解决方法
根据监控面板 TiKV-Details -> RocksDB KV -> Block Cache hit 命中率来判断
- 若 BlockCache 的命中率下降或者抖动,可能是存在全表扫描的 SQL、执行计划选择不正确的 SQL、存在大量 count(*) 操作的 SQL 等等,解决方法:
- 优化具体的 SQL
若 BlockCache 命中率比较稳定,则可能是 Region 并发读取过高导致,在业务查询频繁的命中个别 Region 最终时会导致单个 TiKV 节点性能达到极限,几种解决方法供参考: - 在 4.0 版本中 针对小表的读热点提供了新的解决办法 Load Base Split ,通过调整 TiKV 参数
set config tikv split.qps-threshold=2000
到一个更小的值来 解决读热点问题。具体操作方法参见链接 。- Load Base Split
- 传统的方法: 将小表改造成 hash 分区表,打散 Region 分布,或者将小表热点 region leader 进行手工 split 和 transfer
- 若同时也存在写热点,可以使用 shard_row_id_bits 处理热点表,可以有效缓解读写热点问题
- 开启 Coprocessor Cache 功能,开启该功能后,将在 TiDB 实例侧缓存下推给 TiKV 计算的结果,对于小表读热点能起到比较好的效果
- 使用 Follower Read 功能,在一定程度上可以缓解读热点问题 此特性目前还是实验特性