Documentation Home
MySQL 8.0 参考手册  / 第 27 章 MySQL 性能模式  / 27.12 性能模式表描述  /  22.12.5 性能模式阶段事件表

22.12.5 性能模式阶段事件表

Performance Schema 仪器阶段,它们是语句执行过程中的步骤,例如解析语句、打开表或执行 filesort操作。阶段对应于表中显示的SHOW PROCESSLIST或可见 的线程状态INFORMATION_SCHEMA.PROCESSLIST 。当状态值改变时,阶段开始和结束。

在事件层次结构中,等待事件嵌套在阶段事件中,阶段事件嵌套在语句事件中。

这些表存储阶段事件:

以下部分描述阶段事件表。也有汇集阶段事件信息的汇总表;参见 第 22.12.9.2 节,“阶段汇总表”

有关三个阶段事件表之间关系的更多信息,请参阅 第 22.9 节,“当前和历史事件的性能模式表”

配置阶段事件收集

控制是否采集stage事件,设置相关instruments和consumer的状态:

  • setup_instruments表包含名称以 开头的工具 stage。使用这些工具来启用或禁用各个阶段事件类的收集。

  • setup_consumers表包含名称与当前和历史阶段事件表名称相对应的消费者值。使用这些消费者来过滤阶段事件的集合。

默认情况下禁用舞台乐器。例如:

Press CTRL+C to copy
mysql> SELECT * FROM performance_schema.setup_instruments WHERE NAME RLIKE 'stage/sql/[a-c]'; +----------------------------------------------------+---------+-------+ | NAME | ENABLED | TIMED | +----------------------------------------------------+---------+-------+ | stage/sql/After create | NO | NO | | stage/sql/allocating local table | NO | NO | | stage/sql/altering table | NO | NO | | stage/sql/committing alter table to storage engine | NO | NO | | stage/sql/Changing master | NO | NO | | stage/sql/Checking master version | NO | NO | | stage/sql/checking permissions | NO | NO | | stage/sql/checking privileges on cached query | NO | NO | | stage/sql/checking query cache for query | NO | NO | | stage/sql/cleaning up | NO | NO | | stage/sql/closing tables | NO | NO | | stage/sql/Connecting to master | NO | NO | | stage/sql/converting HEAP to MyISAM | NO | NO | | stage/sql/Copying to group table | NO | NO | | stage/sql/Copying to tmp table | NO | NO | | stage/sql/copy to tmp table | NO | NO | | stage/sql/Creating delayed handler | NO | NO | | stage/sql/Creating sort index | NO | NO | | stage/sql/creating table | NO | NO | | stage/sql/Creating tmp table | NO | NO | +----------------------------------------------------+---------+-------+

默认情况下禁用阶段消费者:

Press CTRL+C to copy
mysql> SELECT * FROM performance_schema.setup_consumers WHERE NAME LIKE 'events_stages%'; +----------------------------+---------+ | NAME | ENABLED | +----------------------------+---------+ | events_stages_current | NO | | events_stages_history | NO | | events_stages_history_long | NO | +----------------------------+---------+

要在服务器启动时控制阶段事件收集,请在my.cnf文件中使用如下行:

  • 使能够:

    Press CTRL+C to copy
    [mysqld] performance-schema-instrument='stage/%=ON' performance-schema-consumer-events-stages-current=ON performance-schema-consumer-events-stages-history=ON performance-schema-consumer-events-stages-history-long=ON
  • 禁用:

    Press CTRL+C to copy
    [mysqld] performance-schema-instrument='stage/%=OFF' performance-schema-consumer-events-stages-current=OFF performance-schema-consumer-events-stages-history=OFF performance-schema-consumer-events-stages-history-long=OFF

要在运行时控制阶段事件收集,请更新 setup_instrumentssetup_consumers表:

  • 使能够:

    Press CTRL+C to copy
    UPDATE performance_schema.setup_instruments SET ENABLED = 'YES', TIMED = 'YES' WHERE NAME LIKE 'stage/%'; UPDATE performance_schema.setup_consumers SET ENABLED = 'YES' WHERE NAME LIKE 'events_stages%';
  • 禁用:

    Press CTRL+C to copy
    UPDATE performance_schema.setup_instruments SET ENABLED = 'NO', TIMED = 'NO' WHERE NAME LIKE 'stage/%'; UPDATE performance_schema.setup_consumers SET ENABLED = 'NO' WHERE NAME LIKE 'events_stages%';

要仅收集特定的舞台事件,请仅启用相应的舞台乐器。要仅为特定阶段事件表收集阶段事件,请启用阶段工具,但仅启用与所需表对应的阶段消费者。

setup_timers表包含一个NAME值为 的 行,该行stage指示阶段事件计时的单位。默认单位是NANOSECOND

Press CTRL+C to copy
mysql> SELECT * FROM performance_schema.setup_timers WHERE NAME = 'stage'; +-------+------------+ | NAME | TIMER_NAME | +-------+------------+ | stage | NANOSECOND | +-------+------------+

要更改计时单位,请修改 TIMER_NAME值:

Press CTRL+C to copy
UPDATE performance_schema.setup_timers SET TIMER_NAME = 'MICROSECOND' WHERE NAME = 'stage';

有关配置事件收集的其他信息,请参阅第 22.3 节,“性能模式启动配置”第 22.4 节,“性能模式运行时配置”