性能模式维护当前和最近的等待事件表,并将该信息聚合到摘要表中。第 29.12.4 节,“性能模式等待事件表” 描述了等待事件的基础事件,包括当前和最近的等待事件表,以及如何控制等待事件收集,默认情况下禁用。
示例等待事件摘要信息:
mysql> SELECT *
FROM performance_schema.events_waits_summary_global_by_event_name\G
...
*************************** 6. row ***************************
EVENT_NAME: wait/synch/mutex/sql/BINARY_LOG::LOCK_index
COUNT_STAR: 8
SUM_TIMER_WAIT: 2119302
MIN_TIMER_WAIT: 196092
AVG_TIMER_WAIT: 264912
MAX_TIMER_WAIT: 569421
...
*************************** 9. row ***************************
EVENT_NAME: wait/synch/mutex/sql/hash_filo::lock
COUNT_STAR: 69
SUM_TIMER_WAIT: 16848828
MIN_TIMER_WAIT: 0
AVG_TIMER_WAIT: 244185
MAX_TIMER_WAIT: 735345
...
每个等待事件摘要表都有一个或多个分组列,以指示表如何聚合事件。事件名称引用 setup_instruments
表中的事件仪器名称:
-
events_waits_summary_by_account_by_event_name
有EVENT_NAME
、USER
和HOST
列。每行总结了给定帐户(用户和主机组合)和事件名称的事件。 -
events_waits_summary_by_host_by_event_name
有EVENT_NAME
和HOST
列。每行总结了给定主机和事件名称的事件。 -
events_waits_summary_by_instance
有EVENT_NAME
和OBJECT_INSTANCE_BEGIN
列。每行总结了给定事件名称和对象的事件。如果仪器用于创建多个实例,每个实例都有一个唯一的OBJECT_INSTANCE_BEGIN
值,并在该表中单独总结。 -
events_waits_summary_by_thread_by_event_name
有THREAD_ID
和EVENT_NAME
列。每行总结了给定线程和事件名称的事件。 -
events_waits_summary_by_user_by_event_name
有EVENT_NAME
和USER
列。每行总结了给定用户和事件名称的事件。 -
events_waits_summary_global_by_event_name
有一个EVENT_NAME
列。每行总结了给定事件名称的事件。一个仪器可能用于创建多个实例的仪器对象。例如,如果有一个互斥锁的仪器,每个连接都创建了一个实例,那么总结行将总结所有这些实例。
每个等待事件摘要表都有这些摘要列,包含聚合值:
-
COUNT_STAR
总结事件的数量。这包括所有事件,无论是计时的还是非计时的。
-
SUM_TIMER_WAIT
总结事件的总等待时间。这只计算计时事件,因为非计时事件的等待时间为
NULL
。同样,对于其他
值也是如此。xxx
_TIMER_WAIT -
MIN_TIMER_WAIT
总结事件的最小等待时间。
-
AVG_TIMER_WAIT
总结事件的平均等待时间。
-
MAX_TIMER_WAIT
总结事件的最大等待时间。
等待事件摘要表有这些索引:
-
events_waits_summary_by_account_by_event_name
:-
主键在 (
USER
,HOST
,EVENT_NAME
)
-
-
events_waits_summary_by_host_by_event_name
:-
主键在 (
HOST
,EVENT_NAME
)
-
-
events_waits_summary_by_instance
:-
主键在 (
OBJECT_INSTANCE_BEGIN
) -
索引在 (
EVENT_NAME
)
-
-
events_waits_summary_by_thread_by_event_name
:-
主键在 (
THREAD_ID
,EVENT_NAME
)
-
-
events_waits_summary_by_user_by_event_name
:-
主键在 (
USER
,EVENT_NAME
)
-
-
events_waits_summary_global_by_event_name
:-
主键在 (
EVENT_NAME
)
-
TRUNCATE TABLE
在等待摘要表中是允许的。它具有以下效果:
-
对于不按账户、主机或用户聚合的摘要表,截断将摘要列重置为零,而不是删除行。
-
对于按账户、主机或用户聚合的摘要表,截断将删除没有连接的账户、主机或用户的行,并将摘要列重置为零。
此外,每个按账户、主机、用户或线程聚合的等待摘要表都隐式地被依赖的连接表的截断所截断,或者被 events_waits_summary_global_by_event_name
的截断所截断。有关详细信息,请参阅 第 29.12.8 节,“性能模式连接表”。