### 27.4.8 消费者配置示例

中的消费者设置[`setup_consumers`](performance-schema-setup-consumers-table.html)表形成从高到低的层次结构。下面的讨论描述了消费者的工作方式，展示了具体的配置及其效果，因为消费者设置从高到低逐渐启用。显示的消费者价值具有代表性。此处描述的一般原则适用于可能可用的其他消费者价值。

配置描述按功能和开销增加的顺序出现。如果您不需要通过启用较低级别设置提供的信息，请禁用它们，以便 Performance Schema 代表您执行更少的代码，并且需要筛选的信息更少。

这[`setup_consumers`](performance-schema-setup-consumers-table.html)表包含以下值层次结构：

```
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
```

笔记

在消费者层次结构中，等待、阶段、语句和事务的消费者都处于同一级别。这与事件嵌套层次结构不同，等待事件嵌套在阶段事件中，嵌套在语句事件中，嵌套在事务事件中。

如果给定的消费者设置是`不`，性能模式禁用与消费者关联的检测并忽略所有较低级别的设置。如果给定的设置是`是的`，Performance Schema 启用与其关联的检测并检查下一个最低级别的设置。有关每个消费者的规则的描述，请参阅[第 27.4.7 节，“消费者预过滤”](performance-schema-consumer-filtering.html).

例如，如果`global_instrumentation`已启用，`线程仪表`被检查。如果`线程仪表`启用时，`事件_*`xxx`*_当前的`消费者被检查。如果这些`events_waits_current`已启用，`events_waits_history`和`events_waits_history_long`被检查。

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

-   [没有仪表](performance-schema-consumer-configurations.html#performance-schema-consumer-configurations-no-instrumentation)

-   [仅限全球仪器](performance-schema-consumer-configurations.html#performance-schema-consumer-configurations-global-instrumentation-only)

-   [仅全局和线程检测](performance-schema-consumer-configurations.html#performance-schema-consumer-configurations-global-and-thread-instrumentation-only)

-   [全局、线程和当前事件检测](performance-schema-consumer-configurations.html#performance-schema-consumer-configurations-global-thread-and-current-event-instrumentation)

-   [全局、线程、当前事件和事件历史检测](performance-schema-consumer-configurations.html#performance-schema-consumer-configurations-global-thread-current-event-and-event-history-instrumentation)

#### 没有仪表

服务器配置状态：

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

在此配置中，未检测任何内容。

检查设置元素：

-   桌子[`setup_consumers`](performance-schema-setup-consumers-table.html)， 消费者`global_instrumentation`

    维护的输出表：

-   没有

#### 仅限全球仪器

服务器配置状态：

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

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

相对于前面的配置，检查了其他设置元素：

-   桌子[`setup_consumers`](performance-schema-setup-consumers-table.html)， 消费者`线程仪表`

-   桌子[`setup_instruments`](performance-schema-setup-instruments-table.html)

-   桌子[`设置对象`](performance-schema-setup-objects-table.html)

    相对于前面的配置，维护了额外的输出表：

-   [`互斥实例`](performance-schema-mutex-instances-table.html)

-   [`rwlock_instances`](performance-schema-rwlock-instances-table.html)

-   [`条件实例`](performance-schema-cond-instances-table.html)

-   [`文件实例`](performance-schema-file-instances-table.html)

-   [`用户`](performance-schema-users-table.html)

-   [`主机`](performance-schema-hosts-table.html)

-   [`帐户`](performance-schema-accounts-table.html)

-   [`socket_summary_by_event_name`](performance-schema-socket-summary-tables.html)

-   [`file_summary_by_instance`](performance-schema-file-summary-tables.html)

-   [`file_summary_by_event_name`](performance-schema-file-summary-tables.html)

-   [`objects_summary_global_by_type`](performance-schema-objects-summary-global-by-type-table.html)

-   [`memory_summary_global_by_event_name`](performance-schema-memory-summary-tables.html)

-   [`table_lock_waits_summary_by_table`](performance-schema-table-wait-summary-tables.html#performance-schema-table-lock-waits-summary-by-table-table)

-   [`table_io_waits_summary_by_index_usage`](performance-schema-table-wait-summary-tables.html#performance-schema-table-io-waits-summary-by-index-usage-table)

-   [`table_io_waits_summary_by_table`](performance-schema-table-wait-summary-tables.html#performance-schema-table-io-waits-summary-by-table-table)

-   [`events_waits_summary_by_instance`](performance-schema-wait-summary-tables.html)

-   [`events_waits_summary_global_by_event_name`](performance-schema-wait-summary-tables.html)

-   [`events_stages_summary_global_by_event_name`](performance-schema-stage-summary-tables.html)

-   [`events_statements_summary_global_by_event_name`](performance-schema-statement-summary-tables.html)

-   [`events_transactions_summary_global_by_event_name`](performance-schema-transaction-summary-tables.html)

#### 仅全局和线程检测

服务器配置状态：

```
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`](performance-schema-setup-consumers-table.html), 消费者`事件_*`xxx`*_当前的`， 在哪里*`xxx`*是`等待`,`阶段`,`陈述`,`交易`

-   桌子[`setup_actors`](performance-schema-setup-actors-table.html)

-   柱子`线程.instrumented`

    相对于前面的配置，维护了额外的输出表：

-   `事件_*`xxx`*_summary_by_*`年年`*_by_event_name`， 在哪里*`xxx`*是`等待`,`阶段`,`陈述`,`交易`;和*`年年`*是`线`,`用户`,`主持人`,`帐户`

#### 全局、线程和当前事件检测

服务器配置状态：

```
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      |
...
+----------------------------------+---------+
```

在此配置中，检测是全局和每个线程维护的。单个事件收集在当前事件表中，但不在事件历史表中。

相对于前面的配置，检查了其他设置元素：

-   消费者`事件_*`xxx`*_历史`， 在哪里*`xxx`*是`等待`, `阶段`, `陈述`, `交易`

-   消费者`事件_*`xxx`*_history_long`， 在哪里*`xxx`*是`等待`, `阶段`, `陈述`, `交易`

    相对于前面的配置，维护了额外的输出表：

-   `事件_*`xxx`*_当前的`， 在哪里*`xxx`*是`等待`,`阶段`,`陈述`,`交易`

#### 全局、线程、当前事件和事件历史检测

上述配置不收集任何事件历史记录，因为`事件_*`xxx`*_历史`和`事件_*`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      |
...
+----------------------------------+---------+
```

为此配置维护的事件历史表：

-   `事件_*`xxx`*_历史`， 在哪里*`xxx`*是`等待`, `阶段`, `陈述`, `交易`

    此配置在全局范围内收集事件历史记录，但不是每个线程：


```
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     |
...
+----------------------------------+---------+
```

为此配置维护的事件历史表：

-   `事件_*`xxx`*_history_long`， 在哪里*`xxx`*是`等待`, `阶段`, `陈述`, `交易`

    此配置在每个线程和全局范围内收集事件历史记录：


```
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     |
...
+----------------------------------+---------+
```

为此配置维护的事件历史表：

-   `事件_*`xxx`*_历史`， 在哪里*`xxx`*是`等待`, `阶段`, `陈述`, `交易`

-   `事件_*`xxx`*_history_long`， 在哪里*`xxx`*是`等待`, `阶段`, `陈述`, `交易`
