上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人
9.11 查看哪些语句使用了临时表
使用statements_with_temp_tables视图可以查看使用了临时表的语句,在默认情况下按照磁盘临时表数量和内存临时表数量进行降序排列。数据来源:performance_schema.events_statements_summary_by_digest。
下面是使用statements_with_temp_tables视图查询的结果集。
mysql> select * from statements_with_temp_tables limit 1\G *************************** 1. row *************************** query: SELECT`performance_schema`. ... name`. `SUM_TIMER_WAIT`DESC # 经过标准化转换的语句字符串 db: sys # 语句对应的默认数据库,如果没有默认数据库,则该字段值为NULL exec_count: 2 # 语句执行的总次数 total_latency: 1.53 s # 语句执行的总延迟时间(执行时间) memory_tmp_tables: 458 # 语句执行时创建的内部内存临时表的总数量 disk_tmp_tables: 38 # 语句执行时创建的内部磁盘临时表的总数量 avg_tmp_tables_per_query: 229 # 对于使用了内存临时表的语句,每条语句使用内存临时表的平均数量(见视图查询语句文本中的SUM_CREATED_TMP_TABLES/COUNT_STAR) tmp_tables_to_disk_pct: 8 # 内存临时表的总数量与磁盘临时表的总数量百分比,表示磁盘临时表的转换率(见视图查询语句文本中的SUM_CREATED_TMP_DISK_TABLES/SUM_CREATED_TMP_TABLES) first_seen: 2017-09-07 11:18:31 # 该语句第一次出现的时间 last_seen: 2017-09-07 11:19:43 # 该语句最近一次出现的时间 digest: 6f58edd9cee71845f592cf5347f8ecd7 # 语句摘要计算的MD5 hash值 1 row in set(0.00 sec)
下面贴出视图查询语句文本。
SELECT sys.format_statement(DIGEST_TEXT)AS query, SCHEMA_NAME as db, COUNT_STAR AS exec_count, sys.format_time(SUM_TIMER_WAIT)as total_latency, SUM_CREATED_TMP_TABLES AS memory_tmp_tables, SUM_CREATED_TMP_DISK_TABLES AS disk_tmp_tables, ROUND(IFNULL(SUM_CREATED_TMP_TABLES / NULLIF(COUNT_STAR, 0), 0))AS avg_tmp_tables_per_query, ROUND(IFNULL(SUM_CREATED_TMP_DISK_TABLES / NULLIF(SUM_CREATED_TMP_TABLES, 0), 0)* 100)AS tmp_tables_to_disk_pct, FIRST_SEEN as first_seen, LAST_SEEN as last_seen, DIGEST AS digest FROM performance_schema.events_statements_summary_by_digest WHERE SUM_CREATED_TMP_TABLES > 0 ORDER BY SUM_CREATED_TMP_DISK_TABLES DESC, SUM_CREATED_TMP_TABLES DESC;
温馨提示:关于sys系统库更详细的内容,可参阅微信公众号“沃趣技术”,其中我们用15个章节对其进行了全方位的介绍。