配置

Performance Schema的部分设置只能在服务器启动时更改,比如:

  • 启用或禁用Performance Schema

  • 内存使用数据收集的限制相关的变量

Performance Schema插桩消费者表则可以被动态启用或禁用

注意

启用或禁用Performance Schema

要启用或禁用Performance Schema,可以将变量performance_schema设置为ON或OFF。这是一个只读变量,要么在配置文件中更改,要么在MySQL服务器启动时通过命令行参数更改

启用或禁用插桩

有三种方法可用于启用或禁用performance_schema插桩:

  1. 使用setup_instruments表:

    UPDATE setup_instruments
    SET enabled = 'YES'
    WHERE name LIKE 'statement/sql/%';
  2. 调用sys schema中的存储过程:

    • ps_setup_enable_instrument:用于启用其参数所对应的插桩

    • ps_setup_disable_instrument:用于禁用其参数所对应的插桩

    这两个存储过程都支持通配符,如果要启用或禁用所有受支持的插桩,请使用通配符“%”:

    CALL sys.ps_setup_disable_instrument('statement/sql/%');
    CALL sys.ps_setup_enable_instrument('statement/sql/%');
  3. 使用performance-schema-instrument启动参数: 这个变量支持performance-schema-instrument='instrument_name=value'这样的语法。其中,instrument_name是插桩名称,值为ON、TRUE或1表示启用,值为OFF、FALSE或0表示禁用。该选项还支持通配符:

    performance-schema-instrument='statement/sql/%=ON'

    如果指定了多个选项,则无论顺序如何,较长的插桩字符串优先于较短的插桩字符串

注意

启用或禁用消费者表

消费者表也可以通过以下三种方式启用或禁用:

  1. 使用Performance Schema中的setup_consumers表:

  2. 调用sys schema中的存储过程:

    1. ps_setup_enable_consumer:用于启用其参数所对应的消费者表。

    2. ps_setup_disable_consumer:用于禁用其参数所对应的消费者表。

    这两个存储过程都支持通配符,如果要启用或禁用所有受支持的插桩,请使用通配符“%”:

  3. 使用performance-schema-consumer启动参数:

    这个变量支持performance-schema-consumer='table_name=value'这样的语法。其中,table_name是消费者表名,值为ON、TRUE或1表示启用,值为OFF、FALSE或0表示禁用。该选项还支持通配符:

注意

优化特定对象的监控

Performance Schema可以针对特定对象类型(OBJECT_TYPE)schema(OBJECT_SCHEMA)对象名称(OBJECT_NAME)启用或禁用监控。这在setup_objects表中完成。

例如,要关闭 sakila 数据库中触发器的 performance_schema 信息采集,可以使用以下语句:

如果要保留名为 my_trigger 的触发器的信息采集,可通过如下语句进行配置:

注意

这些对象没有配置文件选项。

如果需要在重启后保持配置的更改,可以将这些 INSERT 语句写入SQL文件中,并在启动时使用init_file 选项加载该SQL文件。

优化线程的监控

setup_threads表包含可以监控的后台线程列表:

  • ENABLED列指定是否启用对特定线程的监测

  • HISTORY列指定特定线程的检测事件是否应该存储在 *_history*_history_long 表中

例如,要禁用事件调度程序(thread/sql/event_scheduler)的历史日志记录,可以运行:

用户线程的设置不在setup_threads表中,而是在setup_actors表中,它包含如下表所描述的列:

列名

host

主机名,如 localhost、%、my.domain.com 或 192.168.10.110

user

用户名,如admin 或 %

role

未使用

enabled

是否启用

history

是否在 *_history*_history_long 保存数据

例如,要为用户admin指定规则,可以使用以下命令:

注意

在版本5.7.35中,不存在 setup_threads 这张表!

调整Performance Schema的内存大小

Performance Schema将数据存储在使用PERFORMANCE_SCHEMA引擎的表中,该引擎将数据存储在内存中。

可以通过更改变量来调整 performance schema 的内存大小,变量的名称遵循performance_schema_object_[size | instances | classes | length | handles ] 的模式,其中对象要么是消费者表,要么是设置表,要么是特定事件的插桩实例。例如:

  • 配置变量 performance_schema_events_stages_history_size 定义了 events_stages_history 表可以存储的每个线程的阶段数。

  • 变量 performance_schema_max_memory_classes 定义了可以使用的最大内存插桩数量。

注意

配置的默认值

  • 从5.7版开始,Performance Schema在默认情况下是启用的。大多数插桩默认是禁用的,只启用了全局、线程、语句和事务插桩。从8.0版本开始,默认情况下还启用了元数据锁内存插桩。

  • mysqlinformation_schema performance_schema 数据库没有启用插桩,但所有其他对象线程actor 都启用了插桩。

  • 大多数实例句柄设置表都是自动调整大小的。

  • *_history表会存储每个线程的最后 10 个事件;*_history_long表则存储每个线程的最后 10000 个事件。

  • 存储的SQL文本的最大长度为1024字节,SQL摘要的最大长度也是1024字节,超出部分会被截断(right-trimmed)。

最后更新于