## 27.3 性能架构启动配置

要使用 MySQL 性能模式，必须在服务器启动时启用它以启用事件收集。

性能模式默认启用。要显式启用或禁用它，请使用[`性能模式`](performance-schema-system-variables.html#sysvar_performance_schema)变量设置为适当的值。例如，在服务器中使用这些行`我的.cnf`文件：

```
[mysqld]
performance_schema=ON
```

如果服务器在 Performance Schema 初始化期间无法分配任何内部缓冲区，则 Performance Schema 将自行禁用并设置[`性能模式`](performance-schema-system-variables.html#sysvar_performance_schema)到`离开`，并且服务器在没有检测的情况下运行。

性能模式还允许在服务器启动时进行仪器和消费者配置。

要在服务器启动时控制仪器，请使用以下形式的选项：

```
--performance-schema-instrument='instrument_name=value'
```

这里，*`仪器名称`*是仪器名称，例如`等待/同步/互斥/sql/LOCK_open`， 和*`价值`*是这些值之一：

-   `离开`,`错误的`， 要么`0`：禁用仪器

-   `在`,`真的`， 要么`1`：启用仪器并计时

-   `计数`：启用和计数（而不是时间）仪器

    每个[`--性能模式工具`](performance-schema-options.html#option_mysqld_performance-schema-instrument)option 只能指定一个仪器名称，但可以给出该选项的多个实例来配置多个仪器。此外，仪器名称中允许使用模式来配置与模式匹配的仪器。要将所有条件同步仪器配置为启用并计数，请使用此选项：


```
--performance-schema-instrument='wait/synch/cond/%=COUNTED'
```

要禁用所有仪器，请使用此选项：

```
--performance-schema-instrument='%=OFF'
```

例外：`内存/performance_schema/%`仪器是内置的，不能在启动时禁用。

无论顺序如何，较长的乐器名称字符串优先于较短的模式名称。有关指定模式以选择工具的信息，请参阅[第 27.4.9 节，“为过滤操作命名工具或消费者”](performance-schema-filtering-names.html).

无法识别的仪器名称将被忽略。稍后安装的插件可能会创建仪器，此时名称会被识别和配置。

要在服务器启动时控制消费者，请使用以下形式的选项：

```
--performance-schema-consumer-consumer_name=value
```

这里，*`消费者名称`*是消费者名称，例如`events_waits_history`， 和*`价值`*是这些值之一：

-   `离开`,`错误的`， 要么`0`：不为消费者收集事件

-   `在`,`真的`， 要么`1`：为消费者收集事件

    例如，要启用`events_waits_history`消费者，请使用此选项：


```
--performance-schema-consumer-events-waits-history=ON
```

允许的消费者名称可以通过检查[`setup_consumers`](performance-schema-setup-consumers-table.html)桌子。不允许使用模式。消费者姓名在[`setup_consumers`](performance-schema-setup-consumers-table.html)表使用下划线，但对于启动时设置的消费者，名称中的破折号和下划线是等价的。

性能模式包括几个提供配置信息的系统变量：

```
mysql> SHOW VARIABLES LIKE 'perf%';
+--------------------------------------------------------+---------+
| Variable_name                                          | Value   |
+--------------------------------------------------------+---------+
| performance_schema                                     | ON      |
| performance_schema_accounts_size                       | 100     |
| performance_schema_digests_size                        | 200     |
| performance_schema_events_stages_history_long_size     | 10000   |
| performance_schema_events_stages_history_size          | 10      |
| performance_schema_events_statements_history_long_size | 10000   |
| performance_schema_events_statements_history_size      | 10      |
| performance_schema_events_waits_history_long_size      | 10000   |
| performance_schema_events_waits_history_size           | 10      |
| performance_schema_hosts_size                          | 100     |
| performance_schema_max_cond_classes                    | 80      |
| performance_schema_max_cond_instances                  | 1000    |
...
```

这[`性能模式`](performance-schema-system-variables.html#sysvar_performance_schema)变量是`在`要么`离开`指示性能模式是启用还是禁用。其他变量表示表大小（行数）或内存分配值。

[](<>)[](<>)

笔记

启用 Performance Schema 后，Performance Schema 实例的数量可能会在很大程度上影响服务器内存占用。Performance Schema 自动缩放许多参数以仅根据需要使用内存；看[第 27.17 节，“性能模式内存分配模型”](performance-schema-memory-model.html).

要更改 Performance Schema 系统变量的值，请在服务器启动时设置它们。例如，将以下几行放入`我的.cnf`文件以更改等待事件的历史表的大小：

```
[mysqld]
performance_schema
performance_schema_events_waits_history_size=20
performance_schema_events_waits_history_long_size=15000
```

如果没有明确设置，性能模式会在服务器启动时自动调整其几个参数的值。例如，它以这种方式调整控制事件等待表大小的参数。Performance Schema 以增量方式分配内存，将其内存使用扩展到实际的服务器负载，而不是在服务器启动期间分配它需要的所有内存。因此，根本不需要设置许多尺寸参数。要查看哪些参数是自动调整或自动调整的，请使用[**mysqld --verbose --help**](mysqld.html)并检查选项说明，或查看[第 27.15 节，“性能模式系统变量”](performance-schema-system-variables.html).

对于在服务器启动时未设置的每个 autosized 参数，Performance Schema 会根据以下系统值的值确定如何设置其值，这些值被视为有关您如何配置 MySQL 服务器的“提示”：

```
max_connections
open_files_limit
table_definition_cache
table_open_cache
```

要覆盖给定参数的自动缩放或自动缩放，请在启动时将其设置为 -1 以外的值。在这种情况下，Performance Schema 会为其分配指定的值。

在运行时，[`显示变量`](show-variables.html)显示自动调整参数设置为的实际值。自动缩放的参数显示值为 -1。

如果 Performance Schema 被禁用，它的 autosized 和 autoscaled 参数保持设置为 -1 和[`显示变量`](show-variables.html)显示-1。
