定位MySQL全表扫描语句和临时表语句

演示环境MySQL版本mysql5.7.22

查看哪些语句使用了全表扫描:

sys.statements_with_full_table_scans视图可以查看全表扫描或者没有使用最优索引的语句。在默认情况下 按照全表扫描次数与语句总次数百分比和语句总延迟时间(执行时间)降序排列 数据来源是performance_schema.events_statements_summary_by_digest表

'tidb03' root@localhost 19:48:31 (none)>select * from sys.statements_with_full_table_scans limit 1\G

*************************** 1. row ***************************

query: SELECT * FROM `db_risk` . `t_credit_apply` GROUP BY STATUS #经过标准化转换的语句字符串

db: db_mall #语句对应的默认数据库,如果没有默认数据库,此字段为NULL

exec_count: 1 #语句执行的总次数

total_latency: 958.87 ms #语句执行的总的延迟时间(执行时间)

no_index_used_count: 1 #执行语句没有使用索引扫描表(而是全表扫描)的总次数

no_good_index_used_count: 0 #语句没有使用更好的索引扫描表的总的次数

no_index_used_pct: 100 #执行语句没有使用索引扫描表(而是全表扫描)的次数与语句执行总次数的比分比

rows_sent: 3 #语句执行从表返回给客户端的总数据行数

rows_examined: 155203 #语句执行从存储引擎检查的总数据行数

rows_sent_avg: 3 #每条语句执行从表返回给客户端的平均数据行数

rows_examined_avg: 155203 #每条语句执行从存储引擎读取的平均数据行数

first_seen: 2021-09-11 16:29:32 #语句第一次出现的时间

last_seen: 2021-09-11 16:29:32 #语句最近一次出现的时间

digest: ea2054392088be609f92085b7009c68b #语句摘要计算的MD5 hash 值

10 rows in set (0.12 sec)
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.


查看哪些语句使用了临时表:


sys.statements_with_temp_tables 视图可以查看使用临时表的语句。默认采用临时表数量和内存临时表数量进行降序排列

 

'db-read4' root@localhost 09:58:34 (none)>select * from sys.statements_with_temp_tables limit 2\G

*************************** 1. row ***************************

query: SELECT DISTINCTROW `oro` . `id ... , `oro` . `recycle_date` FROM # 经过标准化转换的语句字符串

db: db_crm #语句对应的默认数据库,如果没有默认数据库,此字段为NULL

exec_count: 1533000 #语句执行的总次数

total_latency: 4.18 h #语句执行的总的延迟时间(执行时间)

memory_tmp_tables: 1533002 ##语句执行创建的内部内存临时表的总数量

disk_tmp_tables: 781 #语句执行创建的内部磁盘临时表的总数量

avg_tmp_tables_per_query: 1 #对于使用了内存临时表的语句,每条语句使用内存临时表的平均数量

tmp_tables_to_disk_pct: 0 #内存临时表的总数量和磁盘临时表的总数量的百分比,表示磁盘临时表的转换率

first_seen: 2021-08-31 19:27:40 #语句第一次出现的时间

last_seen: 2021-09-21 09:57:39 #语句最近一次出现的时间

digest: bc4e497cc1db3e882c95bd2d864282c2

*************************** 2. row ***************************

query: SELECT `trigger_name` , `event ... NARY `event_object_table` = ?
db: db_crm

exec_count: 392

total_latency: 3.47 s

memory_tmp_tables: 392

disk_tmp_tables: 392

avg_tmp_tables_per_query: 1

tmp_tables_to_disk_pct: 100

first_seen: 2021-09-01 20:42:27

last_seen: 2021-09-03 11:52:42

digest: e2a54b56b20eddbe5042266529cc2983

2 rows in set (0.04 sec)
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.
  • 48.
  • 49.
  • 50.


查看哪些语句使用了文件排序:

sys.statements_with_sorting  视图查询的结果集


'db-read4' root@localhost 10:08:32 (none)>select * from sys.statements_with_sorting limit 2\G

*************************** 1. row ***************************

query: SELECT COUNT ( `tsl` . `id` ) ... ROUP BY `tsl` . `new_user_id`
db: db_crm

exec_count: 3349

total_latency: 6.64 h

sort_merge_passes: 0

avg_sort_merges: 0

sorts_using_scans: 1925

sort_using_range: 0

rows_sorted: 368842

avg_rows_sorted: 110

first_seen: 2021-08-31 19:38:57

last_seen: 2021-09-19 00:22:46

digest: c283a0367d88ccdc6f66b115d6862e71
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.


posted @ 2021-09-21 10:34  勤奋的蓝猫  阅读(10)  评论(0编辑  收藏  举报  来源