10bet网址
MySQL性能模式
相关的文档10bet官方网站 下载此节选
PDF(美国高级主任)- 1.2 mb
PDF (A4)- 1.2 mb
HTML下载(TGZ)- 187.0 kb
HTML下载(Zip)- 205.6 kb


MySQL性能模式/性能架构表说明/性能架构阶段事件表

10.5性能架构阶段事件表

Performance Schema使用阶段,这些阶段是语句执行过程中的步骤,例如解析语句、打开表或执行filesort操作。阶段对应于显示的线程状态显示PROCESSLIST或者在INFORMATION_SCHEMA。PROCESSLIST表格阶段在状态值改变时开始和结束。

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

这些表存储了阶段事件:

下面几节描述了阶段事件表。还有一些汇总表汇总了关于阶段事件的信息;看到第10.20.2节“阶段汇总表”

有关三个阶段事件表之间关系的详细信息,请参见当前和历史事件的性能模式表

配置阶段事件收集

为了控制是否收集阶段事件,设置相关工具和消费者的状态:

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

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

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

SELECT NAME, ENABLED, TIMED FROM performance_schemasetup_instruments WHERE NAME RLIKE ' sql/[a-c];+----------------------------------------------------+---------+-------+ | 名字| |定时启用  | +----------------------------------------------------+---------+-------+ | 创建后阶段/ sql / |没有| | |阶段/ sql /分配本地表|没有| | |阶段/ sql /更改表|没有| | |阶段/ sql /提交alter table存储引擎|没有| | |阶段/ sql /改变主|没有| | | |阶段/ sql /检查主版本没有| | | |阶段/ sql /检查权限没有| | |阶段/ sql /清理|没有| | | |阶段/ sql /关闭表没有| | |阶段/ sql /连接到主|没有| | |阶段/ sql /转换堆MyISAM |没有| | |阶段/ sql /复制到组表|没有| | |阶段/ sql / tmp表复制|没有| | |阶段/ sql /复制tmp表|没有| | |阶段/ sql /创建排序索引|没有| | | |阶段/ sql /创建表没有| | |阶段/ sql /创建表| |不tmp  | +----------------------------------------------------+---------+-------+

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

SELECT NAME, ENABLED, TIMED FROM performance_schemasetup_instrumentsWHERE ENABLED='YES' AND NAME LIKE "stage/%"; +------------------------------------------------------+---------+-------+ | NAME | ENABLED | TIMED | +------------------------------------------------------+---------+-------+ | stage/sql/copy to tmp table | YES | YES | | stage/sql/Applying batch of row changes (write) | YES | YES | | stage/sql/Applying batch of row changes (update) | YES | YES | | stage/sql/Applying batch of row changes (delete) | 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 | | stage/innodb/clone (file copy) | YES | YES | | stage/innodb/clone (redo copy) | YES | YES | | stage/innodb/clone (page copy) | YES | YES | +------------------------------------------------------+---------+-------+

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

mysql> SELECT * FROM performance_schemasetup_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-stages-current=ON performance-schema-consumer-events-stages-history=ON performance-schema-consumer-events-stages-history-long=ON
  • 禁用:

    [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_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%';

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

有关配置事件收集的其他信息,请参见第四章,性能模式启动配置,第五章,性能模式运行时配置

事件进展信息

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/copy到TMP表仪表说明进度指标如何工作。在执行ALTER TABLE声明中执行/sql/copy到TMP表阶段,这个阶段可能会执行很长一段时间,这取决于要复制的数据的大小。

表复制任务具有定义的终止(复制所有行),并且执行/sql/copy到TMP表阶段被设置为提供有限的进度信息:使用的工作单元是复制的行数,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表格