setup_consumers
表中的使用者设置形成了一个从高到低的层次结构。以下讨论描述了使用者的工作原理,展示了随着使用者设置从高到低逐步启用时,特定配置及其效果。显示的使用者值具有代表性。此处描述的一般原则适用于可能提供的其他使用者值。
配置描述按功能和开销递增的顺序排列。如果不需要启用较低级别设置提供的信息,请禁用它们,以便 Performance Schema 代表您执行更少的代码,并且需要筛选的信息更少。
setup_consumers
表包含以下值层次结构
global_instrumentation
thread_instrumentation
events_waits_current
events_waits_history
events_waits_history_long
events_stages_current
events_stages_history
events_stages_history_long
events_statements_current
events_statements_history
events_statements_history_long
events_transactions_current
events_transactions_history
events_transactions_history_long
statements_digest
在使用者层次结构中,等待、阶段、语句和事务的使用者都处于同一级别。这与事件嵌套层次结构不同,在事件嵌套层次结构中,等待事件嵌套在阶段事件中,阶段事件嵌套在语句事件中,而语句事件又嵌套在事务事件中。
如果给定的使用者设置为 NO
,则 Performance Schema 将禁用与该使用者关联的监测,并忽略所有较低级别的设置。如果给定的使用者设置为 YES
,则 Performance Schema 将启用与其关联的监测,并检查下一级别的设置。有关每个使用者的规则说明,请参见 第 29.4.7 节“按使用者预过滤”。
例如,如果启用了 global_instrumentation
,则会检查 thread_instrumentation
。如果启用了 thread_instrumentation
,则会检查 events_
使用者。如果启用了 xxx
_currentevents_waits_current
,则会检查 events_waits_history
和 events_waits_history_long
。
以下每个配置描述都指明了 Performance Schema 检查的设置元素以及它维护的输出表(即,它为哪些表收集信息)。
服务器配置状态
mysql> SELECT * FROM performance_schema.setup_consumers;
+---------------------------+---------+
| NAME | ENABLED |
+---------------------------+---------+
| global_instrumentation | NO |
...
+---------------------------+---------+
在此配置中,不进行任何监测。
检查的设置元素
表
setup_consumers
,使用者global_instrumentation
维护的输出表
无
服务器配置状态
mysql> SELECT * FROM performance_schema.setup_consumers;
+---------------------------+---------+
| NAME | ENABLED |
+---------------------------+---------+
| global_instrumentation | YES |
| thread_instrumentation | NO |
...
+---------------------------+---------+
在此配置中,仅对全局状态维护监测。禁用每个线程的监测。
相对于前面的配置,额外检查的设置元素
表
setup_consumers
,使用者thread_instrumentation
相对于前面的配置,额外维护的输出表
服务器配置状态
mysql> SELECT * FROM performance_schema.setup_consumers;
+----------------------------------+---------+
| NAME | ENABLED |
+----------------------------------+---------+
| global_instrumentation | YES |
| thread_instrumentation | YES |
| events_waits_current | NO |
...
| events_stages_current | NO |
...
| events_statements_current | NO |
...
| events_transactions_current | NO |
...
+----------------------------------+---------+
在此配置中,监测在全局和每个线程中维护。当前事件或事件历史记录表中不会收集任何单个事件。
相对于前面的配置,额外检查的设置元素
表
setup_consumers
,使用者events_
,其中xxx
_currentxxx
是waits
、stages
、statements
、transactions
列
threads.instrumented
相对于前面的配置,额外维护的输出表
events_
,其中xxx
_summary_by_yyy
_by_event_namexxx
是waits
、stages
、statements
、transactions
;而yyy
是thread
、user
、host
、account
服务器配置状态
mysql> SELECT * FROM performance_schema.setup_consumers;
+----------------------------------+---------+
| NAME | ENABLED |
+----------------------------------+---------+
| global_instrumentation | YES |
| thread_instrumentation | YES |
| events_waits_current | YES |
| events_waits_history | NO |
| events_waits_history_long | NO |
| events_stages_current | YES |
| events_stages_history | NO |
| events_stages_history_long | NO |
| events_statements_current | YES |
| events_statements_history | NO |
| events_statements_history_long | NO |
| events_transactions_current | YES |
| events_transactions_history | NO |
| events_transactions_history_long | NO |
...
+----------------------------------+---------+
在此配置中,监测在全局和每个线程中维护。单个事件收集在当前事件表中,但不会收集在事件历史记录表中。
相对于前面的配置,额外检查的设置元素
使用者
events_
,其中xxx
_historyxxx
是waits
、stages
、statements
、transactions
使用者
events_
,其中xxx
_history_longxxx
是waits
、stages
、statements
、transactions
相对于前面的配置,额外维护的输出表
events_
,其中xxx
_currentxxx
是waits
、stages
、statements
、transactions
前面的配置不收集事件历史记录,因为 events_
和 xxx
_historyevents_
使用者被禁用。可以单独或一起启用这些使用者,以便按线程、全局或两者都收集事件历史记录。xxx
_history_long
此配置按线程收集事件历史记录,但不在全局范围内收集
mysql> SELECT * FROM performance_schema.setup_consumers;
+----------------------------------+---------+
| NAME | ENABLED |
+----------------------------------+---------+
| global_instrumentation | YES |
| thread_instrumentation | YES |
| events_waits_current | YES |
| events_waits_history | YES |
| events_waits_history_long | NO |
| events_stages_current | YES |
| events_stages_history | YES |
| events_stages_history_long | NO |
| events_statements_current | YES |
| events_statements_history | YES |
| events_statements_history_long | NO |
| events_transactions_current | YES |
| events_transactions_history | YES |
| events_transactions_history_long | NO |
...
+----------------------------------+---------+
为此配置维护的事件历史记录表
events_
,其中xxx
_historyxxx
是waits
、stages
、statements
、transactions
此配置全局收集事件历史记录,但不在每个线程中收集
mysql> SELECT * FROM performance_schema.setup_consumers;
+----------------------------------+---------+
| NAME | ENABLED |
+----------------------------------+---------+
| global_instrumentation | YES |
| thread_instrumentation | YES |
| events_waits_current | YES |
| events_waits_history | NO |
| events_waits_history_long | YES |
| events_stages_current | YES |
| events_stages_history | NO |
| events_stages_history_long | YES |
| events_statements_current | YES |
| events_statements_history | NO |
| events_statements_history_long | YES |
| events_transactions_current | YES |
| events_transactions_history | NO |
| events_transactions_history_long | YES |
...
+----------------------------------+---------+
为此配置维护的事件历史记录表
events_
,其中xxx
_history_longxxx
是waits
、stages
、statements
、transactions
此配置按线程和全局收集事件历史记录
mysql> SELECT * FROM performance_schema.setup_consumers;
+----------------------------------+---------+
| NAME | ENABLED |
+----------------------------------+---------+
| global_instrumentation | YES |
| thread_instrumentation | YES |
| events_waits_current | YES |
| events_waits_history | YES |
| events_waits_history_long | YES |
| events_stages_current | YES |
| events_stages_history | YES |
| events_stages_history_long | YES |
| events_statements_current | YES |
| events_statements_history | YES |
| events_statements_history_long | YES |
| events_transactions_current | YES |
| events_transactions_history | YES |
| events_transactions_history_long | YES |
...
+----------------------------------+---------+
为此配置维护的事件历史记录表
events_
,其中xxx
_historyxxx
是waits
、stages
、statements
、transactions
events_
,其中xxx
_history_longxxx
是waits
、stages
、statements
、transactions