表中的消费者设置
setup_consumers
形成了从高到低的层次结构。以下讨论描述了消费者如何工作,显示了特定配置及其在消费者设置从高到低逐渐启用时的效果。显示的消费者价值具有代表性。此处描述的一般原则适用于其他可用的消费者价值观。
配置描述按照增加的功能和开销的顺序出现。如果您不需要通过启用较低级别设置提供的信息,请禁用它们,性能模式代表您执行更少的代码,您需要筛选的信息也更少。
该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
statements_digest
在消费者层次结构中,等待、阶段和语句的消费者都在同一级别。这不同于事件嵌套层次结构,等待事件嵌套在阶段事件中,阶段事件嵌套在语句事件中。
如果给定的消费者设置为NO
,则性能模式会禁用与消费者关联的检测并忽略所有较低级别的设置。如果给定设置为YES
,则性能模式启用与其关联的检测并检查下一个最低级别的设置。有关每个消费者规则的描述,请参阅
第 22.4.7 节,“消费者预过滤”。
例如,如果global_instrumentation
启用,thread_instrumentation
则选中。如果thread_instrumentation
启用,
则检查消费者。如果
启用了这些,
并
进行了检查。
events_
xxx
_currentevents_waits_current
events_waits_history
events_waits_history_long
以下每个配置描述都指示性能模式检查哪些设置元素以及它维护哪些输出表(即,它为哪些表收集信息)。
服务器配置状态:
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 | YES |
...
+--------------------------------+---------+
在此配置中,检测是全局和每个线程维护的。当前事件或事件历史表中不收集任何单个事件。
相对于前面的配置,检查了其他设置元素:
表,
setup_consumers
消费者 ,在哪里 ,,events_
xxx
_currentxxx
waits
stages
statements
柱子
threads.instrumented
相对于前面的配置,保留了额外的输出表:
events_
,其中xxx
_summary_by_yyy
_by_event_namexxx
,waits
,stages
;statements
并且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_
xxx
_historyxxx
waits
stages
statements
消费者 ,在 哪里 ,
events_
xxx
_history_longxxx
waits
stages
statements
相对于前面的配置,保留了额外的输出表:
events_
,在xxx
_currentxxx
哪里waits
_stages
statements
前面的配置不收集事件历史记录,因为
和
消费者被禁用。这些消费者可以单独或一起启用,以收集每个线程、全局或两者的事件历史记录。
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_
,在xxx
_historyxxx
哪里waits
_stages
statements
此配置全局收集事件历史记录,但不是每个线程:
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_
,在xxx
_history_longxxx
哪里waits
_stages
statements
此配置收集每个线程和全局的事件历史记录:
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_
,在xxx
_historyxxx
哪里waits
_stages
statements
events_
,在xxx
_history_longxxx
哪里waits
_stages
statements