当数据库初始化完成并启动时,并非所有的instruments和consumers都启用了,如果你想要检测的事件并没有打开,需要进行设置。
1. 打开等待事件的采集器配置项开关,需要修改setup_instruments配置表中对应的采集器配置项
root@mysqldb 23:01: [performance_schema]> update setup_instruments set enabled='yes',timed='yes' where name like 'wait%'; Query OK, 217 rows affected (0.00 sec) Rows matched: 502 Changed: 217 Warnings: 0
打开等待事件的保存表配置项开关,修改setup_consumers配置表中对应的配置项。
root@mysqldb 23:09: [performance_schema]> update setup_consumers set enabled='yes' where name like '%wait%'; Query OK, 3 rows affected (0.00 sec) Rows matched: 3 Changed: 3 Warnings: 0
配置好了之后,就可以查看server当前正在做什么了,可以通过查询events_wait_current表来得知,该表中每个线程只包含一行数据,用于显示每个线程的最新监视事件(正在做的事情)
root@mysqldb 23:12: [performance_schema]> select * from events_waits_current limit 1 \G; *************************** 1. row *************************** THREAD_ID: 13 EVENT_ID: 3498 END_EVENT_ID: 3498 EVENT_NAME: wait/synch/mutex/innodb/dblwr_mutex SOURCE: buf0dblwr.cc:396 TIMER_START: 8855684191275290 TIMER_END: 8855684191409024 TIMER_WAIT: 133734 SPINS: NULL OBJECT_SCHEMA: NULL OBJECT_NAME: NULL INDEX_NAME: NULL OBJECT_TYPE: NULL OBJECT_INSTANCE_BEGIN: 140180919516184 NESTING_EVENT_ID: NULL NESTING_EVENT_TYPE: NULL OPERATION: lock NUMBER_OF_BYTES: NULL FLAGS: NULL 1 row in set (0.00 sec)
*_current表中每个线程只保留一条记录,且一旦线程完成工作,该表就不会再记录该线程的事件信息了。*_history表中记录每个线程已经执行完成的事件信息,但每个线程的事件信息只记录10条,再多就会被覆盖。*_history_log表中记录所有信息的事件信息,但总记录数量是10000行,超过会被覆盖掉。
root@mysqldb 23:25: [performance_schema]> select thread_id,event_name,event_id,timer_wait from events_waits_history limit 5; +-----------+----------------------------------------------------+----------+------------+ | thread_id | event_name | event_id | timer_wait | +-----------+----------------------------------------------------+----------+------------+ | 13 | wait/synch/mutex/innodb/buf_pool_flush_state_mutex | 21401 | 67586 | | 13 | wait/synch/mutex/innodb/dblwr_mutex | 21402 | 195568 | | 13 | wait/synch/mutex/innodb/buf_pool_flush_state_mutex | 21403 | 182626 | | 13 | wait/synch/mutex/innodb/flush_list_mutex | 21404 | 497548 | | 13 | wait/synch/mutex/innodb/buf_pool_flush_state_mutex | 21405 | 61834 | +-----------+----------------------------------------------------+----------+------------+
这里的timer_wait是皮秒单位,1秒=10^12次方皮秒
查看执行次数最多的等待事件
root@mysqldb 23:41: [performance_schema]> select event_name, count_star from events_waits_summary_global_by_event_name order by count_star desc limit 5; +--------------------------------------------------+------------+ | event_name | count_star | +--------------------------------------------------+------------+ | wait/synch/mutex/innodb/fil_system_mutex | 153728 | | wait/synch/sxlock/innodb/lock_sys_global_rw_lock | 35390 | | wait/synch/mutex/innodb/lock_wait_mutex | 31871 | | wait/synch/sxlock/innodb/hash_table_locks | 28864 | | wait/synch/mutex/innodb/flush_list_mutex | 26712 | +--------------------------------------------------+------------+ 5 rows in set (0.00 sec)
查看执行时间最长的等待事件
root@mysqldb 23:43: [performance_schema]> select event_name,sum_timer_wait from events_waits_summary_global_by_event_name order by sum_timer_wait desc limit 5; +---------------------------------------------------------+------------------+ | event_name | sum_timer_wait | +---------------------------------------------------------+------------------+ | idle | 9898439779271000 | | wait/synch/cond/mysqlx/scheduler_dynamic_worker_pending | 4683928213912954 | | wait/io/file/innodb/innodb_data_file | 539040525102 | | wait/io/file/innodb/innodb_dblwr_file | 43726901006 | | wait/io/file/innodb/innodb_log_file | 37349772208 | +---------------------------------------------------------+------------------+ 5 rows in set (0.01 sec)
查看事件打开的文件有哪些?
root@mysqldb 23:51: [performance_schema]> select * from file_instances order by open_count desc limit 5; +-------------------------------------------------------------+--------------------------------------+------------+ | FILE_NAME | EVENT_NAME | OPEN_COUNT | +-------------------------------------------------------------+--------------------------------------+------------+ | /data/mysql/data/undo_001 | wait/io/file/innodb/innodb_data_file | 3 | | /data/mysql/data/undo_002 | wait/io/file/innodb/innodb_data_file | 3 | | /data/mysql/data/ibdata1 | wait/io/file/innodb/innodb_data_file | 3 | | /data/mysql/data/mysql.ibd | wait/io/file/innodb/innodb_data_file | 3 | | /data/mysql/data/mysql_innodb_cluster_metadata/clusters.ibd | wait/io/file/innodb/innodb_data_file | 3 | +-------------------------------------------------------------+--------------------------------------+------------+
- performance_schema performance schema 12 02performance_schema performance schema 12 performance_schema performance_schema字段performance日期 performance_schema performance schema 11 performance_schema performance processlist mysql8 performance_schema session_variables performance performance_schema performance性能 常用 系列表 主从performance_schema performance 高性能performance笔记schema 12.02