batch table scan 监控指标计算方法

【 TiDB 使用环境】生产环境 /测试/ Poc
【 TiDB 版本】
【复现路径】做过哪些操作出现的问题
【遇到的问题:问题现象及影响】
【资源配置】进入到 TiDB Dashboard -集群信息 (Cluster Info) -主机(Hosts) 截图此页面
【附件:截图/日志/监控】

监控指标位置
overview - tikv - coprocessor executor count
batch_table_scan

问题
假设一个sql如下
select id,name,age,city from t1 where name=‘aaa’ limit 1000;
其中 name 有索引
这个 sql 会返回1000行数据
那这个sql会有多少 batch_table_scan ?如何相对准确一点计算这个值?
执行计划是否可以计算或者其它方法?

现在遇到一个问题,就是在某一个时刻,集群duration有抖动,batch_table_scan从平时的260k升高到了590多k

查查对应时间有没有慢 SQL? QPS 有剧增么 :thinking:

qps没增加
慢sql增加了,不算太多
谢谢

会不会因为是没使用到覆盖索引,回表查数据导致的table scan?

首先是当前的tikv每个算子,都实现了 BatchExecutor 接口.

该指标的计算代码如下:
https://github.com/tikv/tikv/blob/36e2154f12e85ce5edc0a47d03757d826c37ac64/components/tidb_query_executors/src/runner.rs#L201C43-L201C43

所以这个batch_table_scan指标的算法是,只要出现一次TableScan,就会使这个指标加1.

其实我感觉你这样找绕远了。如果同一时间tablescan暴增,必定有很多慢查询的。
不如从慢查询下手。

[https://github.com/tikv/tikv/blob/36e2154f12e85ce5edc0a47d03757d826c37ac64/components/tidb_query_executors/src/runner.rs#L201C43-L201C43 ]

此话题已在最后回复的 60 天后被自动关闭。不再允许新回复。