暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

TiDB Cluster视图

原创 路在脚下 2022-05-06
711

TiDB Cluster 视图

视图

作用

SQL

CLUSTER_PROCESSLIST

查询会话信息

1)实时TOP SQL执行次数、平均时间维度

2)实时TOP 10 SQL按执行时间排序

3)实时按照ID杀进程

CLUSTER_SLOW_QUERY

查询慢SQL

1)查询慢SQL Text

2)查询慢SQL平均时间执行次

CLUSTER_STATEMENTS_SUMMARY

近30分钟TOP SQL

1)查询近30分钟 TOP SQL

CLUSTER_STATEMENTS_SUMMARY_HISTORY

30分钟后持久话TOP SQL

目前发现持久化并未按照理想情况持久,需要再观察一下。

CLUSTER_LOAD

查询负载信息

-

CLUSTER_HARDWARE

查询硬件信息

-

CLUSTER_CONFIG

查询集群配置信息

-

CLUSTER_LOG

查询集群日志信息

-

CLUSTER_SYSTEMINFO

查询系统新系统配置信息

-


  • CLUSTER_PROCESSLIST

cluster_processlist 视图类似于Oracle gv$session用于查看会话信息,但是可查的信息较少,没有Oracle丰富的Event内容。不过可以看看SQL执行情况,也很有帮助。


TOP SQL执行次数平均时间维度

select substr(INFO,1,100) sql_text,avg(TIME),count(*) cc from cluster_processlist where info!=‘NULL’ group by substr(INFO,1,100) order by count(*);


TOP 10 SQL按执行SQL平均时间排序

select current_time; select * from ( select ID,INSTANCE,INFO,max(TIME) max_time from cluster_processlist
where INFO like ‘update%’ group by INSTANCE,ID,INFO order by max(TIME) desc ) a limit 10;



按照ID杀进程


MySQL [nlc]> show processlist -> ;

+--------+------+----------------+--------------------+---------+-------+-------+------------------------------------------------------------------------------------------------------+

| Id | User | Host | db | Command | Time | State | Info 

|+--------+------+----------------+--------------------+---------+-------+-------+------------------------------------------------------------------------------------------------------+

| 428968 | root | 10.10.10.111 | information_schema | Query | 110 | 2 | SELECT Digest,Conn_ID,(UNIX_TIMESTAMP(Time) + 0E0) AS timestamp,Query,Query_time,Me 

|+--------+------+----------------+--------------------+---------+-------+-------+------------------------------------------------------------------------------------------------------+.........

MySQL [nlc]> kill tidb 428968; 

Query OK, 0 rows affected (0.00 sec)



快速生成kill sql

select TIME e_time,INSTANCE,’ :--kill tidb ‘ || ID |;| FROM cluster_processlist where INFO like ‘update%’ order by e_time desc;


  • CLUSTER_SLOW_QUERY

Dashboard 中慢查询出处,查询CLUSTER_SLOW_QUERY视图一定要加上Time字段,否则你可能查不到你想要的信息。

查询慢SQL Text

select Query,count(*),round(avg(Query_time),1) etime from CLUSTER_SLOW_QUERY where Time>‘2022-03-07 09:00:00.647448’ and Time <‘2022-03-07 09:30:00.647448’ and Query like ‘update%tab1 %force index (index1) set%’ group by Query order by Query,count(*);


查询慢SQL平均时间执行次

select date_format(Time,’%Y-%m-%d %H:%i’) as stime,round(avg(Query_time),1) etime,count(*) cc from INFORMATION_SCHEMA.CLUSTER_SLOW_QUERY where Time>‘2022-03-07 09:00:00.647448’ and Time <‘2022-03-07 09:30:00.647448’ and Query like ‘update tab1 force index (index1) %’ group by date_format(Time,’%Y-%m-%d %H:%i’) order by stime;



  • CLUSTER_STATEMENTS_SUMMARY

查看TOP SQL使用

       因为慢查询日志里面只会记录超过slow-threshold 参数所设置时间的SQL,默认300ms。所以导致很多低于300ms的Top SQL无法捕获和查询,我比较建议持久化这张表中的数据,TiDB似乎也意识到了这一点,将其持久化到CLUSTER_STATEMENTS_SUMMARY_HISTORY表中,但是TiDB做的并不是很好,也因为一定的驱逐机制,导致经常查不到想要的数据,所以我们使用自有监控对这一数据进行了持久化。

它把 SQL 按 SQL digest 和 plan digest 分组,统计每一组的 SQL 信息。

此处的 SQL digest 与 slow log 里的 SQL digest 一样,是把 SQL 规一化后算出的唯一标识符。SQL 的规一化会忽略常量、空白符、大小写的差别。即语法一致的 SQL 语句,其 digest 也相同。

Dashboard TOP SQL 的出处。

SELECT DIGEST ,DIGEST_TEXT ,AVG_LATENCY e_time_avg ,EXEC_COUNT exec_count ,QUERY_SAMPLE_TEXT ,SUMMARY_BEGIN_TIME ,SUMMARY_END_TIME ,FIRST_SEEN ,LAST_SEEN ,QUERY_SAMPLE_TEXT ,PLAN_DIGEST FROM CLUSTER_STATEMENTS_SUMMARY WHERE SUMMARY_BEGIN_TIME >= ‘2022-02-22 09:30:00’ AND SUMMARY_END_TIME <= ‘2022-02-22 10:00:00’ AND QUERY_SAMPLE_TEXT LIKE ‘select * from tbclientadd1&’ \G

  • CLUSTER_STATEMENTS_SUMMARY_HISTORY

查看TOP SQL使用

持久化CLUSTER_STATEMENTS_SUMMARY表上内容,当TOP 会话超过30分钟后,会持久化到CLUSTER_STATEMENTS_SUMMARY_HISTORY。实际使用中发现TiDB对这个视图的持久化并不是很好,经常查不到需要的信息。

因为CLUSTER_STATEMENTS_SUMMARY表中的内容再到达一定数量后会被驱除出去,

Dashboard TOP SQL 的出处。

SELECT DIGEST ,DIGEST_TEXT ,AVG_LATENCY e_time_avg ,EXEC_COUNT exec_count ,QUERY_SAMPLE_TEXT ,SUMMARY_BEGIN_TIME ,SUMMARY_END_TIME ,FIRST_SEEN ,LAST_SEEN ,QUERY_SAMPLE_TEXT ,PLAN_DIGEST FROM CLUSTER_STATEMENTS_SUMMARY_HISTORY WHERE SUMMARY_BEGIN_TIME >= ‘2022-02-22 09:30:00’ AND SUMMARY_END_TIME <= ‘2022-02-22 10:00:00’ AND QUERY_SAMPLE_TEXT LIKE ‘select * from tbclientadd1&’ \G


最后修改时间:2022-07-06 08:38:13
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论