要使用 MySQL Performance Schema,必须在服务器启动时启用它以使事件收集能够发生。
Performance Schema 默认情况下是启用的。要显式启用或禁用它,请使用 performance_schema
变量设置为适当的值启动服务器。例如,在服务器 my.cnf
文件中使用以下行
[mysqld]
performance_schema=ON
如果服务器在 Performance Schema 初始化期间无法分配任何内部缓冲区,则 Performance Schema 将禁用自身并将 performance_schema
设置为 OFF
,服务器将在没有检测的情况下运行。
Performance Schema 还允许在服务器启动时进行仪器和消费者配置。
要在服务器启动时控制仪器,请使用以下形式的选项
--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
表中的消费者名称使用下划线,但对于在启动时设置的消费者,名称中的连字符和下划线是等效的。
Performance Schema 包含几个提供配置信息的系统变量
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
,指示 Performance Schema 是否启用或禁用。其他变量指示表大小(行数)或内存分配值。
启用 Performance Schema 后,Performance Schema 实例的数量会影响服务器内存占用量,可能在很大程度上。Performance Schema 会自动调整许多参数以仅在需要时使用内存;请参见 第 29.17 节,“Performance Schema 内存分配模型”。
要更改 Performance Schema 系统变量的值,请在服务器启动时设置它们。例如,将以下行放在 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。