使用sys schema

sys schema以一种更简单和更易理解的形式解释从performance_schema收集来的数据。为了使sys
schema能工作,应该启用performance_schema。如想最大限度地使用sys schema,需要启用
performances_schema上的所有消费者和计数器,但这样会影响服务器的性能。所以,仅启动你在寻
找的消费者。
带有x$前缀的视图以皮秒为单位显示数据,供其他工具做进一步的处理;其他表是人类可阅读的。

如何操作
从sys schema中启用一个计数器:
mysql> CALL sys.ps_setup_enable_instrument(‘statement’);
±-----------------------+
| summary |
±-----------------------+
| Enabled 22 instruments |
±-----------------------+
1 row in set (0.01 sec)
Query OK, 0 rows affected (0.01 sec)

如果要重置为默认值,执行以下操作:
mysql> CALL sys.ps_setup_reset_to_default(TRUE)\G

sys schema中有许多表,下面只是展示了其中一些最常用的表。
按类型列出每个主机的语句(INSERT和SELECT)
mysql> SELECT statement, total, total_latency, rows_sent, rows_examined,
-> rows_affected, full_scans FROM sys.host_summary_by_statement_type
-> WHERE host=‘localhost’ ORDER BY total DESC LIMIT 5;
±-----------±------±--------------±----------±--------------±-------------
-±-----------+
| statement | total | total_latency | rows_sent | rows_examined | rows_affected
| full_scans |
±-----------±------±--------------±----------±--------------±-------------
-±-----------+
| set | 4920 | 8.41 ms | 0 | 0 | 0
| 0 |
| freturn | 2460 | 1.33 ms | 0 | 0 | 0
| 0 |
| Field List | 246 | 152.92 ms | 0 | 0 | 0
| 0 |
| stmt | 39 | 23.60 ms | 33 | 7515 | 559
| 0 |
| select | 21 | 514.21 ms | 373761 | 1200320 | 0
| 14 |
±-----------±------±--------------±----------±--------------±-------------
-±-----------+
5 rows in set (0.00 sec)

按类型列出每个用户的语句
mysql> SELECT statement, total, total_latency, rows_sent, rows_examined,
-> rows_affected, full_scans FROM sys.user_summary_by_statement_type
-> ORDER BY total DESC LIMIT 5;
±------------±------±--------------±----------±--------------±------------
–±-----------+
| statement | total | total_latency | rows_sent | rows_examined |
rows_affected | full_scans |
±------------±------±--------------±----------±--------------±------------
–±-----------+
| set | 4920 | 8.41 ms | 0 | 0 |
0 | 0 |
| freturn | 2465 | 1.34 ms | 0 | 0 |
0 | 0 |
| Field List | 246 | 152.92 ms | 0 | 0 |
0 | 0 |
| jump_if_not | 42 | 43.94 us | 0 | 0 |
0 | 0 |
| stmt | 39 | 23.60 ms | 33 | 7515 |
559 | 0 |
±------------±------±--------------±----------±--------------±------------
–±-----------+
5 rows in set (0.00 sec)

冗余索引
mysql> SELECT * FROM sys.schema_redundant_indexes
-> WHERE table_name=‘employees’ \G
*************************** 1. row ***************************
table_schema: employees
table_name: employees
redundant_index_name: name_desc
redundant_index_columns: first_name,last_name
redundant_index_non_unique: 1
dominant_index_name: name
dominant_index_columns: first_name,last_name
dominant_index_non_unique: 1
subpart_exists: 0
sql_drop_index: ALTER TABLE employees.employees DROP INDEX
name_desc
1 row in set (0.00 sec)

未使用的索引
mysql> SELECT * FROM sys.schema_unused_indexes
-> WHERE object_schema=‘employees’;
±--------------±-------------±---------------+
| object_schema | object_name | index_name |
±--------------±-------------±---------------+
| employees | dept_emp | dept_no |
| employees | dept_manager | dept_no |
| employees | employees | hire_date |
| employees | employees | last_name |
| employees | employees | name |
| employees | employees | name_desc |
| employees | employees | hire_date_year |
±--------------±-------------±---------------+
7 rows in set, 1 warning (0.00 sec)

每个主机执行的语句
mysql> SELECT * FROM sys.host_summary ORDER BY statements DESC LIMIT 1\G
*************************** 1. row ***************************
host: localhost
statements: 7829
statement_latency: 794.13 ms
statement_avg_latency: 101.43 us
table_scans: 39
file_ios: 1346
file_io_latency: 136.09 ms
current_connections: 1
total_connections: 2
unique_users: 1
current_memory: 1.32 MiB
total_memory_allocated: 42.29 MiB
1 row in set (0.01 sec)

对表的统计
mysql> SELECT * FROM sys.schema_table_statistics LIMIT 1\G
*************************** 1. row ***************************
table_schema: employees
table_name: employees
total_latency: 443.36 ms
rows_fetched: 1200096
fetch_latency: 443.36 ms
rows_inserted: 0
insert_latency: 0 ps
rows_updated: 0
update_latency: 0 ps
rows_deleted: 0
delete_latency: 0 ps
io_read_requests: 1300
io_read: 20.31 MiB
io_read_latency: 129.43 ms
io_write_requests: 0
io_write: 0 bytes
io_write_latency: 0 ps
io_misc_requests: 5
io_misc_latency: 41.88 us
1 row in set (0.02 sec)

对带缓冲区(buffer)的表的统计:
mysql> SELECT * FROM sys.schema_table_statistics_with_buffer LIMIT 1\G
*************************** 1. row ***************************
table_schema: employees
table_name: employees
rows_fetched: 1200096
fetch_latency: 443.36 ms
rows_inserted: 0
insert_latency: 0 ps
rows_updated: 0
update_latency: 0 ps
rows_deleted: 0
delete_latency: 0 ps
io_read_requests: 1300
io_read: 20.31 MiB
io_read_latency: 129.43 ms
io_write_requests: 0
io_write: 0 bytes
io_write_latency: 0 ps
io_misc_requests: 5
io_misc_latency: 41.88 us
innodb_buffer_allocated: 19.62 MiB
innodb_buffer_data: 18.31 MiB
innodb_buffer_free: 1.32 MiB
innodb_buffer_pages: 1256
innodb_buffer_pages_hashed: 0
innodb_buffer_pages_old: 88
innodb_buffer_rows_cached: 180523
1 row in set (0.21 sec)

语句分析
此输出类似于performance_schema.events_statements_summary_by_digest和pt-query-digest的输出。
根据查询的执行次数,排在前几位的查询如下
mysql> SELECT * FROM sys.statement_analysis ORDER BY exec_count DESC LIMIT 1\G
*************************** 1. row ***************************
query: SHOW VARIABLES LIKE ?
db: employees
full_scan: *
exec_count: 10
err_count: 0
warn_count: 0
total_latency: 13.25 ms
max_latency: 2.32 ms
avg_latency: 1.32 ms
lock_latency: 1.74 ms
rows_sent: 53
rows_sent_avg: 5
rows_examined: 5780
rows_examined_avg: 578
rows_affected: 0
rows_affected_avg: 0
tmp_tables: 10
tmp_disk_tables: 0
rows_sorted: 0
sort_merge_passes: 0
digest:
230e50b71157a47e34c64f86d958d304e42cc8bad0d5a345f7f60672da38222c
first_seen: 2019-10-06 16:53:22.542062
last_seen: 2019-10-06 17:22:18.985453
1 row in set (0.01 sec)

扫描二维码关注公众号,回复: 12921176 查看本文章

消耗了最大的tmp_disk_tables的语句为:
mysql> SELECT * FROM sys.statement_analysis ORDER BY tmp_disk_tables DESC LIMIT
1\G
*************************** 1. row ***************************
query: SELECT IF ( ( locate ( ? , ... . COMPRESSED_SIZE ) )
DESC
db: sys
full_scan: *
exec_count: 2
err_count: 0
warn_count: 0
total_latency: 391.11 ms
max_latency: 215.87 ms
avg_latency: 195.55 ms
lock_latency: 1.23 ms
rows_sent: 3
rows_sent_avg: 2
rows_examined: 267623
rows_examined_avg: 133812
rows_affected: 0
rows_affected_avg: 0
tmp_tables: 16
tmp_disk_tables: 2
rows_sorted: 4328
sort_merge_passes: 6
digest:
bf060aa9a5df456317f07a0159bcd8e91c9fd9a588a89d87d42e89f3767147b8
first_seen: 2019-10-06 20:54:43.243844
last_seen: 2019-10-06 20:55:26.335113
1 row in set (0.00 sec)

猜你喜欢

转载自blog.csdn.net/wangboyujiayou/article/details/106397272