一、现象
出现了一台tikv的cpu远远高于其他两台,其监控如下图所示
二、排查
1.阐述
单点tikv的负载高,很容易就能想到是热点的问题,接下来我们就验证这个问题
2.查看监控TiKV-Details/Thread CPU
可以看到unified read pool的cpu其中一个tikv明显高于其他两个节点,所以这证明了其中的一个tikv发生了热点读的情况
3.定位热点表和索引
方法一、查看热力图
热力图能够帮我们定位出热点具体是哪张表,哪个索引,如下图所示,高亮部分便是热点部分
方法二、通过pd-ctl查看
region topread 20
region topwrite 20
# 或者
hot read
hot write
根据上面的region hotread的结果,将leader store id为负载高的store的region挑出来,然后通过下面的方式查看region对应的表和索引
# 方式一
select * from information_schema.TIKV_region_status where region_id in (123,456,789);
# 方式二、
curl http://{TiDBIP}:10080/regions/{RegionId}
三、解决问题
知道问题是读热点,且定位到了表就比较好解决了
1.慢查询
优化慢查询,如果不方便更改sql,可以采用执行计划绑定的方式