25.4.8 Consumer 配置示例
setup_consumerstable 中的使用者设置形成了从较高级别到较低级别的层次结构。以下讨论描述了使用者的工作方式,显示了从高到低逐渐启用使用者设置时的特定配置及其效果。显示的 Consumer 价值具有代 table 性。此处描述的一般原则适用于其他可用的 Consumer 价值。
配置描述按功能和开销增加的 Sequences 进行。如果不需要通过启用较低级别设置提供的信息,请禁用它们,并且“性能模式”将代 table 您执行较少的代码,并且您将需要筛选的信息也较少。
setup_consumerstable 包含以下值的层次结构:
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
Note
在使用者层次结构中,用于 await,阶段,语句和事务的使用者都处于同一级别。这与事件嵌套层次结构不同,事件嵌套层次结构的 await 事件嵌套在阶段事件内,await 事件嵌套在语句事件内,事务嵌套在事务事件内。
如果给定的使用者设置为NO
,则性能架构将禁用与使用者相关联的工具,并忽略所有较低级别的设置。如果给定的设置为YES
,则性能架构将启用与其关联的工具,并在下一个最低级别检查设置。有关每个使用者的规则的描述,请参见第 25.4.7 节“Consumer 的预过滤”。
例如,如果启用了global_instrumentation
,则选中thread_instrumentation
。如果启用了thread_instrumentation
,则将检查events_xxx_current
使用者。如果启用了这些events_waits_current
,则将检查events_waits_history
和events_waits_history_long
。
以下每个配置描述都指示性能模式检查哪些设置元素以及它维护哪些输出 table(即,它为哪些 table 收集信息)。
No Instrumentation
服务器配置状态:
mysql> SELECT * FROM performance_schema.setup_consumers;
+---------------------------+---------+
| NAME | ENABLED |
+---------------------------+---------+
| global_instrumentation | NO |
...
+---------------------------+---------+
在此配置中,不会检测任何东西。
检查设置元素:
- tablesetup_consumers,Consumer
global_instrumentation
维护输出 table:
- None
仅限 Global Instrumentation
服务器配置状态:
mysql> SELECT * FROM performance_schema.setup_consumers;
+---------------------------+---------+
| NAME | ENABLED |
+---------------------------+---------+
| global_instrumentation | YES |
| thread_instrumentation | NO |
...
+---------------------------+---------+
在此配置中,仅针对全局状态维护检测。每线程检测被禁用。
相对于之前的配置,检查了其他设置元素:
-
tablesetup_consumers,Consumer
thread_instrumentation
-
Table setup_instruments
-
Table setup_objects
-
Table setup_timers
相对于先前的配置,还维护了其他输出 table:
仅全局和线程检测
服务器配置状态:
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 |
...
+----------------------------------+---------+
在此配置中,将按全局和每个线程维护检测。当前事件或事件历史 table 中未收集任何单个事件。
相对于之前的配置,检查了其他设置元素:
-
tablesetup_consumers,使用者
events_xxx_current
,其中*xxx
*是waits
,stages
,statements
,transactions
-
Table setup_actors
-
列
threads.instrumented
相对于先前的配置,还维护了其他输出 table:
events_xxx_summary_by_yyy_by_event_name
,其中*xxx
是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 |
...
+----------------------------------+---------+
在此配置中,将按全局和每个线程维护检测。单个事件收集在当前事件 table 中,而不收集在事件历史 table 中。
相对于之前的配置,检查了其他设置元素:
-
Consumer
events_xxx_history
,其中*xxx
*是waits
,stages
,statements
,transactions
-
Consumer
events_xxx_history_long
,其中*xxx
*是waits
,stages
,statements
,transactions
相对于先前的配置,还维护了其他输出 table:
events_xxx_current
,其中*xxx
*是waits
,stages
,statements
,transactions
全局,线程,当前事件和事件历史记录检测
由于禁用了events_xxx_history
和events_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 |
...
+----------------------------------+---------+
为此配置维护的事件历史 table:
events_xxx_history
,其中*xxx
*是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 |
...
+----------------------------------+---------+
为此配置维护的事件历史 table:
events_xxx_history_long
,其中*xxx
*是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 |
...
+----------------------------------+---------+
为此配置维护的事件历史 table:
-
events_xxx_history
,其中*xxx
*是waits
,stages
,statements
,transactions
-
events_xxx_history_long
,其中*xxx
*是waits
,stages
,statements
,transactions