10bet网址
MySQL 5.7参考手册
相关的文档10bet官方网站 本手册下载
PDF (Ltr)- 36.3 mb
PDF (A4)- 36.3 mb
手册页(TGZ)- 236.9 kb
手册页(邮政编码)- 348.5 kb
信息(Gzip)- 3.4 mb
信息(邮政编码)- 3.4 mb
本手册节选

25.12.5性能模式阶段事件表

性能模式处理阶段,这些阶段是语句执行过程中的步骤,如解析语句、打开表或执行filesort操作。所显示的线程状态对应显示PROCESSLIST或者是看得见的INFORMATION_SCHEMA。PROCESSLIST表格当状态值改变时,阶段开始和结束。

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

这些表存储了阶段事件:

以下部分描述了舞台事件表。也有汇总阶段事件信息的汇总表;看到第25.12.15.2节“阶段汇总表”

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

配置阶段事件收集

控制是否收集阶段事件,设置相关仪器和消费者的状态:

  • setup_instruments表包含名称以“。”开头的仪器阶段.使用这些工具可以启用或禁用各个阶段事件类的收集。

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

除了那些提供语句进度信息的工具之外,阶段工具在默认情况下是禁用的。例如:

SELECT * FROM performance_schema。setup_instrumentsWHERE 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 sort index | NO | NO | | stage/sql/creating table | NO | NO | | stage/sql/Creating tmp table | NO | NO | +----------------------------------------------------+---------+-------+

提供语句进度信息的阶段事件工具在默认情况下是启用和计时的:

SELECT * FROM performance_schema。setup_instrumentsWHERE ENABLED='YES' AND NAME LIKE "stage/%"; +------------------------------------------------------+---------+-------+ | NAME | ENABLED | TIMED | +------------------------------------------------------+---------+-------+ | stage/sql/copy to tmp table | YES | YES | | stage/innodb/alter table (end) | YES | YES | | stage/innodb/alter table (flush) | YES | YES | | stage/innodb/alter table (insert) | YES | YES | | stage/innodb/alter table (log apply index) | YES | YES | | stage/innodb/alter table (log apply table) | YES | YES | | stage/innodb/alter table (merge sort) | YES | YES | | stage/innodb/alter table (read PK and internal sort) | YES | YES | | stage/innodb/buffer pool load | YES | YES | +------------------------------------------------------+---------+-------+

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

SELECT * FROM performance_schema。setup_consumersWHERE NAME LIKE 'events_stages%'; +----------------------------+---------+ | NAME | ENABLED | +----------------------------+---------+ | events_stages_current | NO | | events_stages_history | NO | | events_stages_history_long | NO | +----------------------------+---------+

要在服务器启动时控制阶段事件收集,请在您的my.cnf文件:

  • 启用:

    [mysqld] performance-schema-instrument='stage/%=ON' performance-schema-consumer-events-stage -current=ON performance-schema-consumer-events-stage -history=ON performance-schema-consumer-events-stage -history-long=ON
  • 禁用:

    [mysqld] performance-schema-instrument='stage/%=OFF' performance-schema-consumer-events-stage -current=OFF performance-schema-consumer-events-stage -history=OFF

若要在运行时控制阶段事件收集,请更新setup_instruments而且setup_consumers表:

  • 启用:

    更新performance_schema。setup_instrumentsSET ENABLED = 'YES', TIMED = 'YES' WHERE NAME LIKE 'stage/%'; UPDATE performance_schema.setup_consumers SET ENABLED = 'YES' WHERE NAME LIKE 'events_stages%';
  • 禁用:

    更新performance_schema。setup_instrumentsSET ENABLED = 'NO', TIMED = 'NO' WHERE NAME LIKE 'stage/%'; UPDATE performance_schema.setup_consumers SET ENABLED = 'NO' WHERE NAME LIKE 'events_stages%';

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

setup_timer表包含具有的名字的价值阶段表示阶段事件计时的单位。默认单位为纳秒

SELECT * FROM performance_schema。setup_timers WHERE NAME = 'stage';+-------+------------+ | 名字| TIMER_NAME  | +-------+------------+ | 阶段|纳秒  | +-------+------------+

如果需要更改定时单位,请修改TIMER_NAME值:

更新performance_schema。setup_timerSET TIMER_NAME = 'MICROSECOND' WHERE NAME = 'stage';

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

赛事进度信息

Performance Schema阶段事件表包含两列,它们合起来为每一行提供了一个阶段进度指示器:

  • WORK_COMPLETED:该阶段完成的工作单元的数量

  • WORK_ESTIMATED:该阶段预期的工作单元数

每一列是如果没有提供仪器的进度信息。资料的解释,如果有的话,完全取决于文书的执行情况。Performance Schema表提供了一个容器来存储进度数据,但是没有对度量本身的语义做任何假设:

  • 一个工作单位是一个整数度量,在执行期间随着时间的推移而增加,例如所处理的字节数、行数、文件数或表数。的定义工作单位对于一个特定的仪器,留给提供数据的仪器代码。

  • WORK_COMPLETEDValue可以一次增加一个或多个单元,这取决于仪器化的代码。

  • WORK_ESTIMATED值可以在此阶段更改,这取决于仪器化的代码。

阶段事件进度指示器的工具可以实现以下任何行为:

  • 任何进展仪器

    这是最典型的情况,没有提供进度数据。的WORK_COMPLETED而且WORK_ESTIMATED列都是

  • 无限进展仪器

    只有WORK_COMPLETED列是有意义的。未提供数据WORK_ESTIMATED列,其中显示0。

    通过查询events_stages_current表,监视应用程序可以报告到目前为止已经执行了多少工作,但不能报告该阶段是否接近完成。目前,还没有这样的阶段。

  • 有界的进步仪器

    WORK_COMPLETED而且WORK_ESTIMATED列都是有意义的。

    这种类型的进度指示器适用于具有已定义的完成标准的操作,例如后面描述的表复制工具。通过查询events_stages_current表,监视应用程序可以报告到目前为止已经执行了多少工作,并可以报告该阶段的总体完成百分比,通过计算WORK_COMPLETED/WORK_ESTIMATED比率。

执行/sql/复制到TMP表工具说明了进度指标如何工作。在执行ALTER TABLE声明中执行/sql/复制到TMP表阶段,这个阶段可能会执行很长时间,具体取决于要复制的数据的大小。

表复制任务具有已定义的终止(复制的所有行),并且执行/sql/复制到TMP表stage被测量来提供有限的进度信息:使用的工作单元是复制的行数,WORK_COMPLETED而且WORK_ESTIMATED都是有意义的,它们的比率表示任务完成百分比。

要启用该工具和相关的使用者,请执行以下语句:

更新performance_schema。setup_instrumentsSET ENABLED='YES' WHERE NAME='stage/sql/copy to tmp table'; UPDATE performance_schema.setup_consumers SET ENABLED='YES' WHERE NAME LIKE 'events_stages_%';

看一个正在进行的进展ALTER TABLE语句,从events_stages_current表格