Dashboard中TopSQL与SQL分析不一致

【 TiDB 使用环境】测试
【 TiDB 版本】v6.1.0
【复现路径】无
【遇到的问题:问题现象及影响】
当前TiDB节点CPU和内存占用偏高,在排查时发现TopSQL内存在多个SQL消耗了大量的CPU,但是按照官方文档使用SQL模版ID进行搜索时无法查询到该SQL并且TopSQL中的call/s和latency/call都是0
【附件:截图/日志/监控】


你先把最大的sql降下来 当tidb整个卡住的时候是有看不到sql详情的情况

通过在sql命令窗口查看慢查询语句

搜索Top N 的慢查询

select query_time,query

frominformation_schema.slow_query

where is_internal =false – 排除 TiDB内部的慢查询 SQL

order by query_timedesc

limit 2;

时间单位为秒

这是之前测试数据时,执行的插入语句,被tidb判断为慢查询,因为没有索引

搜索某个用户的Top N 慢查询

select query_time,query, user

frominformation_schema.slow_query

where is_internal =false – 排除 TiDB内部的慢查询 SQL

and user = “test” – 查找的用户名

order by query_timedesc

limit 2;

根据SQL 指纹搜索同类慢查询

先根据topn查询到digest值,再查询指纹值

select query_time,query, digest

frominformation_schema.slow_query

where is_internal =false

order by query_timedesc

limit 1;

select query,query_time

frominformation_schema.slow_query

where digest =“31a61be6ba3e5a51b26372ba82e6cdc7b517e73630af5937ad7b607500375aac”;

搜索统计信息为pseudo 的慢查询SQL 语句

select query,query_time, stats

frominformation_schema.slow_query

where is_internal =false

and stats like%pseudo%; 用用这些sql 也能排查

都是0的情况是卡了

感谢您的回复,但我在使用后发现这几个SQL的SQL模板ID都无法在SlowQuery中查到,没法在information_schema.slow_query中获得有效信息。
这个是因为这条SQL执行的速度并不慢,未被SlowQuery收录,还是说因为某些原因卡住了,未被SLowQuery收录?

是不是时间范围不对?慢查询是按sql执行结束的时间作为查询时间。正在执行的sql不会出现在慢sql中。

你要查找的top SQL 执行的频率是什么样?如果执行很快慢SQL不会记录。sql分析是来源于statement_summary那几个表里,里面的内容会随着时间被移出。

我感觉这几条SQL好像是一直在执行,因为一直在执行所以没有进入SlowQuery,同时call/s与latency/call也都是0
但是看Grafana的面板,这种情况已经持续了1个多月了,我觉得SQL不可能执行一个月,因为是有maxTime一类的限制的
目前我重启了3台tidb节点,然后这些TopSQL就全部消失了,看起来确实很像几个SQL一直在执行


我看不到执行频率的信息,因为这几个SQL的模板ID在SQL语句分析、SlowQuery和日志中都搜索不到,所以只知道这几个TopSQL消耗了大量的CPU,但频率、时间、用户都查不到

cluster_statements_summary cluster_statements_summary_history从这2个表里找找呢

查询两张表都没有结果

用PLAN_DIGEST匹配试试呢

也还是查不到,就好像这几个占用CPU超高的SQL没存在过一样

估计是bug了