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
是这些值中的一个:
-
OFF
、FALSE
或0
:禁用仪器 -
ON
、TRUE
或1
:启用并计时仪器 -
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
是这些值中的一个:
-
OFF
、FALSE
或0
:不收集事件以供消费者使用 -
ON
、TRUE
或1
:为消费者收集事件
例如,要启用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
变量是ON
或OFF
,指示性能模式是否启用或禁用。其他变量指示表的大小(行数)或内存分配值。
在性能模式启用时,性能模式实例数量可能对服务器内存占用产生重大影响。性能模式自动调整许多参数,以仅使用所需的内存;请参阅第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。