性能架构维护用于收集当前和最近阶段事件的表,并在摘要表中汇总这些信息。 第 29.12.5 节,“性能架构阶段事件表” 描述了阶段摘要所基于的事件。请参阅该讨论以了解阶段事件内容、当前和历史阶段事件表以及如何控制阶段事件收集的信息,阶段事件收集默认情况下是禁用的。
示例阶段事件摘要信息
mysql> SELECT *
FROM performance_schema.events_stages_summary_global_by_event_name\G
...
*************************** 5. row ***************************
EVENT_NAME: stage/sql/checking permissions
COUNT_STAR: 57
SUM_TIMER_WAIT: 26501888880
MIN_TIMER_WAIT: 7317456
AVG_TIMER_WAIT: 464945295
MAX_TIMER_WAIT: 12858936792
...
*************************** 9. row ***************************
EVENT_NAME: stage/sql/closing tables
COUNT_STAR: 37
SUM_TIMER_WAIT: 662606568
MIN_TIMER_WAIT: 1593864
AVG_TIMER_WAIT: 17907891
MAX_TIMER_WAIT: 437977248
...每个阶段摘要表都有一个或多个分组列,用于指示表如何汇总事件。事件名称是指 setup_instruments 表中的事件检测器名称。
events_stages_summary_by_account_by_event_name具有EVENT_NAME、USER和HOST列。每行汇总了给定帐户(用户和主机组合)和事件名称的事件。events_stages_summary_by_host_by_event_name具有EVENT_NAME和HOST列。每行汇总了给定主机和事件名称的事件。events_stages_summary_by_thread_by_event_name具有THREAD_ID和EVENT_NAME列。每行汇总了给定线程和事件名称的事件。events_stages_summary_by_user_by_event_name具有EVENT_NAME和USER列。每行汇总了给定用户和事件名称的事件。events_stages_summary_global_by_event_name具有EVENT_NAME列。每行汇总了给定事件名称的事件。
每个阶段摘要表都包含以下包含汇总值的汇总列:COUNT_STAR、SUM_TIMER_WAIT、MIN_TIMER_WAIT、AVG_TIMER_WAIT 和 MAX_TIMER_WAIT。这些列类似于等待事件摘要表中同名列的列(请参阅 第 29.12.20.1 节,“等待事件摘要表”),不同之处在于阶段摘要表汇总来自 events_stages_current 而不是 events_waits_current 的事件。
阶段摘要表包含以下索引
events_stages_summary_by_account_by_event_name:主键在 (
USER,HOST,EVENT_NAME)
events_stages_summary_by_host_by_event_name:主键在 (
HOST,EVENT_NAME)
events_stages_summary_by_thread_by_event_name:主键在 (
THREAD_ID,EVENT_NAME)
events_stages_summary_by_user_by_event_name:主键在 (
USER,EVENT_NAME)
events_stages_summary_global_by_event_name:主键在 (
EVENT_NAME)
TRUNCATE TABLE 允许用于阶段摘要表。它具有以下效果
对于没有按帐户、主机或用户汇总的摘要表,截断会将汇总列重置为零,而不是删除行。
对于按帐户、主机或用户汇总的摘要表,截断会删除没有连接的帐户、主机或用户的行,并将剩余行的汇总列重置为零。
此外,每个按帐户、主机、用户或线程聚合的阶段摘要表都受到其所依赖的连接表的截断或events_stages_summary_global_by_event_name的截断的隐式截断。有关详细信息,请参见第 29.12.8 节,“性能架构连接表”。