上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人
9.10 查看哪些语句使用了文件排序
使用statements_with_sorting视图可以查看执行了文件排序的语句,在默认情况下按照语句总延迟时间(执行时间)降序排列。数据来源:performance_schema.events_statements_summary_by_digest。
下面是使用statements_with_sorting视图查询的结果集。
mysql> select * from statements_with_sorting limit 1\G *************************** 1. row *************************** query: SELECT IF((`locate`(? , ` ... . `COMPRESSED_SIZE`))DESC #经过标准化转换的语句字符串 db: sys # 语句对应的默认数据库,如果没有默认数据库,则该字段值为NULL exec_count: 4 # 语句执行的总次数 total_latency: 46.53 s # 语句执行的总延迟时间(执行时间) sort_merge_passes: 48 # 语句执行发生的语句排序合并的总次数 avg_sort_merges: 12 # 针对发生排序合并的语句,每条语句的平均排序合并次数(见视图查询语句文本中的SUM_SORT_MERGE_PASSES/COUNT_STAR) sorts_using_scans: 16 # 语句排序执行全表扫描的总次数 sort_using_range: 0 # 语句排序执行范围扫描的总次数 rows_sorted: 415391 # 语句执行发生排序的总数据行数 avg_rows_sorted: 103848 # 针对发生排序的语句,每条语句的平均排序数据行数(见视图查询语句文本中的SUM_SORT_ROWS/COUNT_STAR) first_seen: 2017-09-07 12:36:58 # 该语句第一次出现的时间 last_seen: 2017-09-07 12:38:37 # 该语句最近一次出现的时间 digest: 59abe341d11b5307fbd8419b0b9a7bc3 # 语句摘要计算的MD5 hash值 1 row in set(0.00 sec)
下面贴出视图查询语句文本。
SELECT sys.format_statement(DIGEST_TEXT)AS query, SCHEMA_NAME db, COUNT_STAR AS exec_count, sys.format_time(SUM_TIMER_WAIT)AS total_latency, SUM_SORT_MERGE_PASSES AS sort_merge_passes, ROUND(IFNULL(SUM_SORT_MERGE_PASSES / NULLIF(COUNT_STAR, 0), 0))AS avg_sort_merges, SUM_SORT_SCAN AS sorts_using_scans, SUM_SORT_RANGE AS sort_using_range, SUM_SORT_ROWS AS rows_sorted, ROUND(IFNULL(SUM_SORT_ROWS / NULLIF(COUNT_STAR, 0), 0))AS avg_rows_sorted, FIRST_SEEN as first_seen, LAST_SEEN as last_seen, DIGEST AS digest FROM performance_schema.events_statements_summary_by_digest WHERE SUM_SORT_ROWS > 0 ORDER BY SUM_TIMER_WAIT DESC;