文档首页
MySQL 8.4 参考手册
相关文档 下载本手册
PDF (US Ltr) - 39.9Mb
PDF (A4) - 40.0Mb
手册页 (TGZ) - 258.5Kb
手册页 (Zip) - 365.5Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 8.4 参考手册  /  MySQL 性能模式  /  性能模式启动配置

29.3 性能模式启动配置

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

性能模式默认情况下处于启用状态。要显式启用或禁用它,请使用 performance_schema 变量设置为适当的值启动服务器。例如,在服务器 my.cnf 文件中使用以下行

[mysqld]
performance_schema=ON

如果服务器在性能模式初始化期间无法分配任何内部缓冲区,性能模式将禁用自身并将 performance_schema 设置为 OFF,服务器将在没有检测的情况下运行。

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

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

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

这里,instrument_name 是仪器名称,例如 wait/synch/mutex/sql/LOCK_openvalue 是以下值之一

  • OFFFALSE0: 禁用仪器

  • ONTRUE1: 启用并计时仪器

  • COUNTED: 启用并计数(而不是计时)仪器

每个 --performance-schema-instrument 选项只能指定一个仪器名称,但可以给出该选项的多个实例来配置多个仪器。此外,在仪器名称中允许使用模式来配置与模式匹配的仪器。要将所有条件同步仪器配置为启用并计数,请使用以下选项

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

要禁用所有仪器,请使用以下选项

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

例外: memory/performance_schema/% 仪器是内置的,无法在启动时禁用。

更长的仪器名称字符串优先于更短的模式名称,无论顺序如何。有关指定模式以选择仪器的信息,请参阅 第 29.4.9 节,“为过滤操作命名仪器或消费者”

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

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

--performance-schema-consumer-consumer_name=value

这里,consumer_name 是消费者名称,例如 events_waits_historyvalue 是以下值之一

  • OFFFALSE0: 不要为消费者收集事件

  • ONTRUE1: 为消费者收集事件

例如,要启用 events_waits_history 消费者,请使用以下选项

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

允许的消费者名称可以通过检查 setup_consumers 表找到。模式不允许。 setup_consumers 表中的消费者名称使用下划线,但在启动时设置的消费者中,名称中的破折号和下划线是等效的。

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

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 变量为 ONOFF,表示性能模式是启用还是禁用。其他变量指示表大小(行数)或内存分配值。

注意

在启用性能模式的情况下,性能模式实例的数量会影响服务器内存占用,可能很大。性能模式会自动调整许多参数,以便仅在需要时使用内存;请参阅 第 29.17 节,“性能模式内存分配模型”

要更改性能模式系统变量的值,请在服务器启动时设置它们。例如,将以下行放在 my.cnf 文件中以更改等待事件的历史表的尺寸

[mysqld]
performance_schema
performance_schema_events_waits_history_size=20
performance_schema_events_waits_history_long_size=15000

如果在服务器启动时未明确设置 Performance Schema 的某些参数值,则它会自动调整这些参数的大小。例如,它会以这种方式调整控制事件等待表大小的参数。Performance Schema 会逐步分配内存,根据实际的服务器负载扩展内存使用,而不是在服务器启动时分配所有需要的内存。因此,许多大小参数根本不需要设置。要查看哪些参数是自动调整大小或自动缩放的,请使用 mysqld --verbose --help 并检查选项描述,或者参见 第 29.15 节,“Performance Schema 系统变量”

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

max_connections
open_files_limit
table_definition_cache
table_open_cache

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

在运行时,SHOW VARIABLES 会显示为自动调整大小参数设置的实际值。自动缩放参数显示的值为 -1。

如果 Performance Schema 被禁用,其自动调整大小和自动缩放参数将保持设置为 -1,SHOW VARIABLES 会显示 -1。