Documentation Home
MySQL 8.4 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 39.8Mb
PDF (A4) - 39.9Mb
Man Pages (TGZ) - 257.9Kb
Man Pages (Zip) - 364.9Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 8.4 Reference Manual  /  MySQL Performance Schema  /  Performance Schema Startup Configuration

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_open这样的仪器名称,value是这些值中的一个:

  • 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_history这样的消费者名称,value是这些值中的一个:

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

Note

在性能模式启用时,性能模式实例数量可能对服务器内存占用产生重大影响。性能模式自动调整许多参数,以仅使用所需的内存;请参阅第29.17节,“性能模式内存分配模型”

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

[mysqld]
performance_schema
performance_schema_events_waits_history_size=20
performance_schema_events_waits_history_long_size=15000

性能_schema在服务器启动时自动调整了几个参数的值,如果它们没有被明确设置。例如,它这样调整了控制事件等待表大小的参数。性能_schema按需分配内存,根据实际服务器负载来扩展其内存使用,而不是在服务器启动时一次性分配所有需要的内存。因此,大多数大小参数都不需要在启动时设置。要查看哪些参数是自动调整的或自动缩放的,可以使用mysqld --verbose --help并检查选项描述,或者查看第29.15节,“性能_schema系统变量”

对于每个未在服务器启动时设置的自动调整参数,性能_schema会根据以下系统值的值来确定其值,这些系统值被认为是关于您如何配置MySQL服务器的“提示”

max_connections
open_files_limit
table_definition_cache
table_open_cache

要覆盖自动调整或缩放给定参数的值,请在启动时将其设置为其他值(除了-1)。在这种情况下,性能_schema会分配指定的值。

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

如果性能_schema被禁用,其自动调整和自动缩放参数将保持为-1,SHOW VARIABLES将显示-1。