SELECT `_tidb_rowid` FROM xxx tablesample regions () ORDER BY `_tidb_rowid` 导致tidb持续高负载

【 TiDB 使用环境】生产环境
【 TiDB 版本】v6.3.0
【复现路径】没什么操作,凌晨1点开始使用dumpling备份
【遇到的问题:问题现象及影响】
1点30开始出现大量 SELECT _tidb_rowid FROM xxx tablesample regions () ORDER BY _tidb_rowid ,集群负载过高,拒绝业务请求

这个表中的数据量并不大,< 200W

同时tidb日志出现大量报错

其中一个节点的cpu一直很高

检查了集群状态、锁使用情况等没看出什么异常,后重启tidb恢复

etcd-clichen put kv failed 看起来是不是tikv节点的问题?

日志报错的都是主键冲突啊🤔

嗯,这个日志应该和不可用没关系

然后从 cpu 使用率图中看到 400%,也没耗费多少 cpu 啊

盘不好,io打满了

出现这个no vaild key found for split要注意这个表的是否存在一些超大region。
这些region因为gc的bug导致mvcc版本信息堆积,然后就造成了一些超大的region。
所以看上去表的数据不多。但是扫描时间巨长。我看你这个200w的表,执行时间怕是有几个小时。
结合你上面图里面的报错,有大概率是这个问题。

解决方法就是上面帖子中说的,关闭gc filter in compaction特性。等待gc。