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_historyevents_waits_history_long

以下每个配置描述都指示性能模式检查哪些设置元素以及它维护哪些输出 table(即,它为哪些 table 收集信息)。

No Instrumentation

服务器配置状态:

mysql> SELECT * FROM performance_schema.setup_consumers;
+---------------------------+---------+
| NAME                      | ENABLED |
+---------------------------+---------+
| global_instrumentation    | NO      |
...
+---------------------------+---------+

在此配置中,不会检测任何东西。

检查设置元素:

维护输出 table:

  • None

仅限 Global Instrumentation

服务器配置状态:

mysql> SELECT * FROM performance_schema.setup_consumers;
+---------------------------+---------+
| NAME                      | ENABLED |
+---------------------------+---------+
| global_instrumentation    | YES     |
| thread_instrumentation    | NO      |
...
+---------------------------+---------+

在此配置中,仅针对全局状态维护检测。每线程检测被禁用。

相对于之前的配置,检查了其他设置元素:

相对于先前的配置,还维护了其他输出 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 *是waitsstagesstatementstransactions

  • Table setup_actors

  • threads.instrumented

相对于先前的配置,还维护了其他输出 table:

  • events_xxx_summary_by_yyy_by_event_name,其中* xxx waitsstagesstatementstransactions;并且 yyy *是threaduserhostaccount

全局,线程和当前事件检测

服务器配置状态:

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 中。

相对于之前的配置,检查了其他设置元素:

  • Consumerevents_xxx_history,其中* xxx *是waitsstagesstatementstransactions

  • Consumerevents_xxx_history_long,其中* xxx *是waitsstagesstatementstransactions

相对于先前的配置,还维护了其他输出 table:

  • events_xxx_current,其中* xxx *是waitsstagesstatementstransactions

全局,线程,当前事件和事件历史记录检测

由于禁用了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      |
...
+----------------------------------+---------+

为此配置维护的事件历史 table:

  • events_xxx_history,其中* xxx *是waitsstagesstatementstransactions

此配置全局收集事件历史记录,但不按线程收集事件历史记录:

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 *是waitsstagesstatementstransactions

此配置按线程并全局收集事件历史记录:

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 *是waitsstagesstatementstransactions

  • events_xxx_history_long,其中* xxx *是waitsstagesstatementstransactions