10bet网址
MySQL 8.0参考手册
相关的文档10bet官方网站 下载本手册
PDF(美国高级主任)- 41.3 mb
PDF (A4)- 41.4 mb
PDF (RPM)- 39.6 mb
HTML下载(TGZ)- 9.3 mb
HTML下载(Zip)- 9.3 mb
HTML下载(RPM)- 7.8 mb
手册页(TGZ)- 262.1 kb
手册页(Zip)- 372.2 kb
信息(Gzip)- 4.0 mb
信息(邮政编码)- 4.0 mb
本手册节选

27.12.7性能模式事务表

性能模式检测事务。在事件层次结构中,等待事件嵌套在阶段事件中,阶段事件嵌套在语句事件中,语句事件嵌套在事务事件中。

这些表存储事务事件:

下面几节描述事务事件表。还有一些汇总表可以聚合关于事务事件的信息;看到第27.12.20.5节,“交易汇总表”

有关三个事务事件表之间关系的详细信息,请参见第27.9节,“当前和历史事件的性能模式表”

配置事务事件收集

要控制是否收集事务事件,可以设置相关工具和消费者的状态:

  • setup_instruments表中包含一个名为事务.使用此工具可以启用或禁用单个事务事件类的集合。

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

事务仪器及events_transactions_current而且events_transactions_history默认情况下启用事务消费者:

SELECT NAME, ENABLED, TIMED FROM performance_schemasetup_instruments WHERE NAME = '事务';+-------------+---------+-------+ | 名字| |定时启用  | +-------------+---------+-------+ | 事务| |是的  | +-------------+---------+-------+ 从performance_schema mysql > SELECT *。setup_consumers WHERE NAME LIKE 'events_transactions%';+----------------------------------+---------+ | 启用名字|  | +----------------------------------+---------+ | events_transactions_current |是| | events_transactions_history |是| | events_transactions_history_long |不  | +----------------------------------+---------+

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

  • 启用:

    [mysqld] performance-schema-instrument='transaction=ON' performance-schema-consumer-events-transactions-current=ON performance-schema-consumer-events-transactions-history=ON performance-schema-consumer-events-transactions-history-long=ON
  • 禁用:

    [mysqld] performance-schema-instrument='transaction=OFF' performance-schema-consumer-events-transactions-current=OFF性能-schema-consumer-events-transactions-history=OFF性能-schema-consumer-events-transactions-history-long=OFF

控件可在运行时控制事务事件收集setup_instruments而且setup_consumers表:

  • 启用:

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

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

若要仅为特定的事务事件表收集事务事件,请启用事务仪器,但只有对应于所需表的事务消费者。

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

事务边界

在MySQL Server中,事务显式地以以下语句开始:

Start transaction | begin | xa Start | xa begin

事务也隐式启动。例如,当自动提交当系统变量被启用时,每条语句的开始都将开始一个新的事务。

自动提交禁用时,已提交事务之后的第一个语句将标记新事务的开始。在事务提交之前,后续语句都是事务的一部分。

事务显式地以以下语句结束:

Commit | rollback | xa Commit | xa rollback

通过执行DDL语句、锁定语句和服务器管理语句,事务也隐式结束。

在接下来的讨论中,参考开始事务也适用于开始XA开始,XA开始.类似地,对提交而且回滚适用于XA提交而且XA回滚,分别。

性能模式定义的事务边界类似于服务器的事务边界。事务事件的开始和结束与服务器中相应的状态转换密切匹配:

  • 类的处理期间,事务事件开始开始事务声明。

  • 对于隐式启动的事务,事务事件在前一个事务结束后在使用事务引擎的第一个语句上启动。

  • 对于任何事务,无论是显式结束还是隐式结束,事务事件在处理过程中服务器从活动事务状态转换时结束提交回滚

这种方法有一些微妙的含义:

  • 性能模式中的事务事件不完全包括与相应模式相关联的语句事件开始事务提交,或回滚语句。在事务事件和这些语句之间有少量的时间重叠。

  • 使用非事务性引擎的语句对连接的事务状态没有影响。对于隐式事务,事务事件从使用事务引擎的第一个语句开始。这意味着只在非事务性表上操作的语句将被忽略,甚至在后面也不例外开始事务

为了说明这一点,请考虑以下场景:

1.设置自动提交=关闭;2.CREATE TABLE t1 (a INT) = InnoDB;3.开始事务;——事务1开始4。插入t1 VALUES (1), (2), (3);5.CREATE TABLE t2 (a INT) ENGINE = MyISAM; -- Transaction 1 COMMIT -- (implicit; DDL forces commit) 6. INSERT INTO t2 VALUES (1), (2), (3); -- Update nontransactional table 7. UPDATE t2 SET a = a + 1; -- ... and again 8. INSERT INTO t1 VALUES (4), (5), (6); -- Write to transactional table -- Transaction 2 START (implicit) 9. COMMIT; -- Transaction 2 COMMIT

从服务器的角度来看,事务1结束于表t2被创建。直到事务表被访问,事务2才开始,尽管中间对非事务表进行了更新。

从性能模式的角度来看,事务2在服务器转换到活动事务状态时启动。语句6和7不包含在事务2的边界内,这与服务器将事务写入二进制日志的方式一致。

交易工具

三个属性定义了事务:

为了降低事务插装的复杂性,并确保收集的事务数据提供完整、有意义的结果,所有事务都独立于访问模式、隔离级别或自动提交模式进行插装。

要选择性地检查事务历史,请使用事务事件表中的属性列:ACCESS_MODEISOLATION_LEVEL,自动提交

可以通过多种方式降低事务插装的成本,例如根据用户、帐户、主机或线程(客户端连接)启用或禁用事务插装。

事务和嵌套事件

事务事件的父事件是发起事务的事件。对于显式启动的事务,这包括开始事务而且提交和链接语句。对于隐式启动的事务,它是前一个事务结束后使用事务引擎的第一个语句。

通常,事务是事务期间发起的所有事件的顶级父级,包括显式结束事务的语句,例如提交而且回滚.例外情况是隐式结束事务的语句,如DDL语句,在这种情况下,必须在执行新语句之前提交当前事务。

事务和存储程序

事务和存储的程序事件的关系如下:

  • 存储过程

    存储过程的操作独立于事务。存储过程可以在事务中启动,事务也可以在存储过程中启动或结束。如果从事务中调用存储过程,则存储过程可以执行强制提交父事务的语句,然后启动新事务。

    如果存储过程在事务中启动,则该事务是存储过程事件的父事务。

    如果事务由存储过程启动,则该存储过程是事务事件的父过程。

  • 存储功能

    存储函数受到限制,不能导致显式或隐式提交或回滚。存储的函数事件可以驻留在父事务事件中。

  • 触发器

    触发器激活作为访问与其关联的表的语句的一部分,因此触发器事件的父级始终是激活它的语句。

    触发器不能发出导致事务显式或隐式提交或回滚的语句。

  • 预定的事件

    计划事件主体中的语句在新连接中执行。在父事务中嵌套计划事件不适用。

事务和保存点

保存点语句被记录为单独的语句事件。事务事件包括单独的计数器保存点回滚到保存点,RELEASE SAVEPOINT在交易期间发行的报表。

事务和错误

事务中发生的错误和警告记录在语句事件中,但没有记录在相应的事务事件中。这包括特定于事务的错误和警告,例如非事务表的回滚或GTID一致性错误。