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

MySQL Performance Schema 用于识别执行时间比平均时间多30%的SQL语句

原创 小小亮 2022-10-14
364

MySQL 中的语句摘要 

https://dev.mysql.com/doc/refman/8.0/en/performance-schema-statement-digests.html

解析器也由  and  函数使用,应用程序可以调用这些函数来分别从 SQL 语句计算规范化语句摘要和摘要哈希值。STATEMENT_DIGEST_TEXT() 、STATEMENT_DIGEST()

性能模式中的events_statement_summary_by_digest包含信息


events_statement_summary_by_digest in Performance Schema contains information

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

| Field                       | Type            | Null | Key | Default | Extra |

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

| SCHEMA_NAME                 | varchar(64)     | YES  | MUL | NULL    |       |

| DIGEST                      | varchar(64)     | YES  |     | NULL    |       |

| DIGEST_TEXT                 | longtext        | YES  |     | NULL    |       |

| COUNT_STAR                  | bigint unsigned | NO   |     | NULL    |       |

| SUM_TIMER_WAIT              | bigint unsigned | NO   |     | NULL    |       |

| MIN_TIMER_WAIT              | bigint unsigned | NO   |     | NULL    |       |

| AVG_TIMER_WAIT              | bigint unsigned | NO   |     | NULL    |       |

| MAX_TIMER_WAIT              | bigint unsigned | NO   |     | NULL    |       |

| SUM_LOCK_TIME               | bigint unsigned | NO   |     | NULL    |       |

| SUM_ERRORS                  | bigint unsigned | NO   |     | NULL    |       |

| SUM_WARNINGS                | bigint unsigned | NO   |     | NULL    |       |

| SUM_ROWS_AFFECTED           | bigint unsigned | NO   |     | NULL    |       |

| SUM_ROWS_SENT               | bigint unsigned | NO   |     | NULL    |       |

| SUM_ROWS_EXAMINED           | bigint unsigned | NO   |     | NULL    |       |

| SUM_CREATED_TMP_DISK_TABLES | bigint unsigned | NO   |     | NULL    |       |

| SUM_CREATED_TMP_TABLES      | bigint unsigned | NO   |     | NULL    |       |

| SUM_SELECT_FULL_JOIN        | bigint unsigned | NO   |     | NULL    |       |

| SUM_SELECT_FULL_RANGE_JOIN  | bigint unsigned | NO   |     | NULL    |       |

| SUM_SELECT_RANGE            | bigint unsigned | NO   |     | NULL    |       |

| SUM_SELECT_RANGE_CHECK      | bigint unsigned | NO   |     | NULL    |       |

| SUM_SELECT_SCAN             | bigint unsigned | NO   |     | NULL    |       |

| SUM_SORT_MERGE_PASSES       | bigint unsigned | NO   |     | NULL    |       |

| SUM_SORT_RANGE              | bigint unsigned | NO   |     | NULL    |       |

| SUM_SORT_ROWS               | bigint unsigned | NO   |     | NULL    |       |

| SUM_SORT_SCAN               | bigint unsigned | NO   |     | NULL    |       |

| SUM_NO_INDEX_USED           | bigint unsigned | NO   |     | NULL    |       |

| SUM_NO_GOOD_INDEX_USED      | bigint unsigned | NO   |     | NULL    |       |

| SUM_CPU_TIME                | bigint unsigned | NO   |     | NULL    |       |

| COUNT_SECONDARY             | bigint unsigned | NO   |     | NULL    |       |

| FIRST_SEEN                  | timestamp(6)    | NO   |     | NULL    |       |

| LAST_SEEN                   | timestamp(6)    | NO   |     | NULL    |       |

| QUANTILE_95                 | bigint unsigned | NO   |     | NULL    |       |

| QUANTILE_99                 | bigint unsigned | NO   |     | NULL    |       |

| QUANTILE_999                | bigint unsigned | NO   |     | NULL    |       |

| QUERY_SAMPLE_TEXT           | longtext        | YES  |     | NULL    |       |

| QUERY_SAMPLE_SEEN           | timestamp(6)    | NO   |     | NULL    |       |

| QUERY_SAMPLE_TIMER_WAIT     | bigint unsigned | NO   |     | NULL    |       |

+-----------------------------+-----------------+------+-----+---------+-------+
复制


events_statements_history_long[events_statement_current / events_statement_history] 包含有关 SQL 语句和摘要的信息以及执行时间。通过引用 events_statement_history_long,我们可以跟踪执行时间与表“events_statements_summary_by_digest”中的平均执行时间相比。


1. 开启“performance_schema”收集events_statements_history_long,我们需要开启consumer(对于*history_long)。默认值为OFF,即events_statements_history_long为空,没有任何数据。开启events_statements_history_long可以捕获更多的SQL语句,与平均执行时间相比。

mysql > 更新 setup_consumers 设置启用 ='YES' 其中名称 = 'events_statements_history_long';


2. 检索摘要相同且执行时间比平均时间多 30% 的 SQL 语句列表。

mysql >选择 a.sql_text, a.digest, (a.timer_end - a.timer_start) 持续时间, b.avg_timer_wait 

          > 来自 events_statements_history_long a,events_statements_summary_by_digest b 

          > 其中 a.digest = b.digest 和 b.avg_timer_wait > (a.timer_end - a.timer_start) *1.3


性能架构/系统架构包含有价值的信息,我们可以使用它们来跟踪/调整我们的系统。它可以是 SQL。它可以是存储或文件。  


您可以与其他人分享更多关于如何重用 performance_schema 表来改进您的应用程序的信息。


原文标题:MySQL Performance Schema to identify SQL Statements which the execution duration exceeds average timing by 30%

原文作者:Ivan Ma

原文链接:https://mysqlhk.blogspot.com/2022/10/identify-sql-statements-which-execution.html

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

评论