Performance Schema 维护用于收集当前和最近的语句事件的表,并将该信息聚合在摘要表中。 第 25.12.6 节,“性能模式语句事件表” 描述了语句摘要所基于的事件。有关语句事件的内容、当前和历史语句事件表以及如何控制语句事件收集的信息,请参阅该讨论,默认情况下部分禁用。
示例语句事件摘要信息:
mysql> SELECT *
FROM performance_schema.events_statements_summary_global_by_event_name\G
*************************** 1. row ***************************
EVENT_NAME: statement/sql/select
COUNT_STAR: 25
SUM_TIMER_WAIT: 1535983999000
MIN_TIMER_WAIT: 209823000
AVG_TIMER_WAIT: 61439359000
MAX_TIMER_WAIT: 1363397650000
SUM_LOCK_TIME: 20186000000
SUM_ERRORS: 0
SUM_WARNINGS: 0
SUM_ROWS_AFFECTED: 0
SUM_ROWS_SENT: 388
SUM_ROWS_EXAMINED: 370
SUM_CREATED_TMP_DISK_TABLES: 0
SUM_CREATED_TMP_TABLES: 0
SUM_SELECT_FULL_JOIN: 0
SUM_SELECT_FULL_RANGE_JOIN: 0
SUM_SELECT_RANGE: 0
SUM_SELECT_RANGE_CHECK: 0
SUM_SELECT_SCAN: 6
SUM_SORT_MERGE_PASSES: 0
SUM_SORT_RANGE: 0
SUM_SORT_ROWS: 0
SUM_SORT_SCAN: 0
SUM_NO_INDEX_USED: 6
SUM_NO_GOOD_INDEX_USED: 0
...
每个语句汇总表都有一个或多个分组列来指示该表如何聚合事件。事件名称参考
setup_instruments
表中事件工具的名称:
events_statements_summary_by_account_by_event_name
有EVENT_NAME
、USER
和HOST
列。每行汇总了给定帐户(用户和主机组合)的事件和事件名称。events_statements_summary_by_digest
有SCHEMA_NAME
和DIGEST
列。每行汇总每个模式和摘要值的事件。(该DIGEST_TEXT
列包含相应的规范化语句摘要文本,但既不是分组列也不是摘要列。)表中的最大行数在服务器启动时自动调整。要明确设置此最大值,请
performance_schema_digests_size
在服务器启动时设置系统变量。events_statements_summary_by_host_by_event_name
有EVENT_NAME
和HOST
列。每行总结了给定主机和事件名称的事件。events_statements_summary_by_program
有OBJECT_TYPE
、OBJECT_SCHEMA
和OBJECT_NAME
列。每行汇总给定存储程序(存储过程或函数、触发器或事件)的事件。events_statements_summary_by_thread_by_event_name
有THREAD_ID
和EVENT_NAME
列。每行汇总了给定线程和事件名称的事件。events_statements_summary_by_user_by_event_name
有EVENT_NAME
和USER
列。每行汇总了给定用户和事件名称的事件。events_statements_summary_global_by_event_name
有一EVENT_NAME
列。每行汇总了给定事件名称的事件。prepared_statements_instances
有一OBJECT_INSTANCE_BEGIN
列。每行总结了给定准备好的语句的事件。
每个报表汇总表都有这些汇总列,其中包含聚合值(例外情况已注明):
COUNT_STAR
,SUM_TIMER_WAIT
,MIN_TIMER_WAIT
,AVG_TIMER_WAIT
,MAX_TIMER_WAIT
这些列类似于等待事件摘要表中的同名列(请参阅 第 25.12.15.1 节,“等待事件摘要表”),除了语句摘要表聚合事件来自
events_statements_current
而不是events_waits_current
。该
prepared_statements_instances
表没有这些列。SUM_
xxx
表中相应
xxx
列 的聚合events_statements_current
。例如,语句汇总表中的SUM_LOCK_TIME
和 列是 表中和列的聚合 。SUM_ERRORS
LOCK_TIME
ERRORS
events_statements_current
该
events_statements_summary_by_digest
表具有以下附加摘要列:
FIRST_SEEN
,LAST_SEEN
时间戳指示首次看到和最近看到具有给定摘要值的语句的时间。
该
events_statements_summary_by_program
表具有以下附加摘要列:
COUNT_STATEMENTS
,SUM_STATEMENTS_WAIT
,MIN_STATEMENTS_WAIT
,AVG_STATEMENTS_WAIT
,MAX_STATEMENTS_WAIT
有关存储程序执行期间调用的嵌套语句的统计信息。
该prepared_statements_instances
表具有以下附加摘要列:
COUNT_EXECUTE
,SUM_TIMER_EXECUTE
,MIN_TIMER_EXECUTE
,AVG_TIMER_EXECUTE
,MAX_TIMER_EXECUTE
执行准备好的语句的汇总统计信息。
TRUNCATE TABLE
语句汇总表是允许的。它具有以下效果:
对于
events_statements_summary_by_digest
,它删除行。对于其他未按帐户、主机或用户聚合的汇总表,截断会将汇总列重置为零而不是删除行。
对于按帐户、主机或用户聚合的其他摘要表,截断会删除没有连接的帐户、主机或用户的行,并将剩余行的摘要列重置为零。
此外,每个按帐户、主机、用户或线程聚合的语句汇总表都会通过截断它所依赖的连接表或截断
events_statements_summary_global_by_event_name
. 有关详细信息,请参阅
第 25.12.8 节,“性能模式连接表”。
如果statements_digest
启用了消费者,则
events_statements_summary_by_digest
在语句完成时会按如下方式聚合。聚合基于DIGEST
为语句计算的值。
如果
events_statements_summary_by_digest
已经存在包含刚刚完成的语句的摘要值的行,则该语句的统计信息将聚合到该行。该LAST_SEEN
列更新为当前时间。如果没有行具有刚刚完成的语句的摘要值,并且表未满,则为该语句创建一个新行。和
FIRST_SEEN
列LAST_SEEN
用当前时间初始化。如果没有行具有刚刚完成的语句的语句摘要值,并且表已满,则将刚刚完成的语句的统计信息添加到带有=的特殊“包罗万象”行, 必要时创建该行。如果创建了行,则使用当前时间初始化和 列。否则,该 列将更新为当前时间。
DIGEST
NULL
FIRST_SEEN
LAST_SEEN
LAST_SEEN
保留带有DIGEST
=
的行NULL
是因为性能模式表由于内存限制而具有最大大小。DIGEST
=NULL
行允许与其他行不匹配的摘要被计算在内,即使汇总表已满,使用公共的
“其他”桶。此行可帮助您估计摘要摘要是否具有代表性:
A
DIGEST
=具有代表所有摘要 5% 的值的NULL
行COUNT_STAR
表明摘要汇总表非常具有代表性;其他行涵盖了所见陈述的 95%。A
DIGEST
=NULL
row that has aCOUNT_STAR
value that represents 50% of all digests 表明摘要汇总表的代表性不强;其他行仅涵盖所见陈述的一半。DBA 很可能应该增加最大表大小,以便使用更具体的行来计算DIGEST
= 行中更多的行。NULL
默认情况下,表是自动调整大小的,但如果这个大小太小,请performance_schema_digests_size
在服务器启动时将系统变量设置为更大的值。
对于在setup_objects
表中启用检测的存储程序类型,
events_statements_summary_by_program
维护存储程序的统计信息如下:
对象在服务器中首次使用时会添加一行。
当对象被删除时,对象所在的行被删除。
统计信息在对象执行时聚集在行中。