10bet网址
MySQL 8.0参考手册
相关的文档10bet官方网站 下载本手册 从本手册中摘录

13.3.7设置交易声明

设置[全局|会话]交易transaction_characteristic[,transaction_characteristic] ......transaction_characteristic:{隔离级别水平|access_mode}水平:{重复阅读|阅读致力于|读未提交|序列化}access_mode:{读写|只读 }

这个声明中指定事务特征。它采用逗号分隔的一个或多个特征值列表。每个特征值设置交易隔离级别或访问模式。隔离级别用于上的操作InnoDB表。访问模式指定事务是以读/写模式还是只读模式进行操作。

此外,设置交易可以包括可选的全球的会议关键字来指示语句的范围。

交易隔离级别

若要设置事务隔离级别,请使用隔离级别水平条款。不允许指定多个隔离级别相同的条款设置交易陈述。

默认隔离级别是可重复阅读。其他允许的值是阅读承诺阅读未提交,可序列化的。有关这些隔离级别的信息,请参阅第15.7.2.1节“交易隔离级别”

事务访问模式

要设置事务访问模式,请使用a阅读写只读条款。不允许在同一地区指定多个访问模式子句设置交易陈述。

缺省情况下,事务发生在读/写模式下,允许允许在事务中使用的表的读取和写入。此模式可以明确地使用设置交易具有访问模式阅读写

如果事务访问模式设置为只读,禁止更改表格。这可以使存储引擎能够在不允许写入时进行性能改进。

在只读模式下,仍然可以更改使用临时使用DML语句的关键字。与永久表一起不允许使用DDL语句进行的更改。

阅读写只读也可以使用该访问模式为单独的事务指定开始事务陈述。

交易特征范围

您可以在全局设置事务特征,用于当前会话,或仅用于下一个事务:

  • 全球的关键词:

    • 该声明全球适用于所有后续会议。

    • 现有会议不受影响。

  • 会议关键词:

    • 该语句适用于当前会话中执行的所有后续事务。

    • 该语句在事务中是允许的,但不影响当前正在进行的事务。

    • 如果在交易之间执行,则该语句会覆盖设置命名特征的下一个事务值的任何前面的语句。

  • 没有任何会议全球的关键词:

    • 该语句仅适用于会话中执行的下一个事务。

    • 后续事务恢复为使用命名特征的会话值。

    • 该声明不允许在交易中获取:

      MySQL>开始交易;查询OK,0行受影响(0.02秒)MySQL> SET事务隔离级别可序列化;错误1568(25001):在进行事务时无法更改事务特性

对全局事务特征的更改需要connection_admin.特权(或已弃用的极好的特权)。任何会话都可以自由更改其会话特征(甚至在事务中间),或其下一个事务的特征(在该事务开始之前)。

要在服务器启动时设置全局隔离级别,请使用- istransaction隔离=水平选项或选项文件中的选项。的值水平对于这个选项,使用破折号而不是空格,所以允许的值是读未提交读取提交重复阅读,或可序列化的

类似地,要在服务器启动时设置全局事务访问模式,请使用- 删除只读选项。默认为(读/写模式),但值可以设置为对于只读模式。

例如,将隔离级别设置为可重复阅读以及进入模式阅读写,使用这些行[mysqld]选项文件的部分:

[MySQLD]事务隔离=可重复读取的事务读取= OFF

在运行时,可以间接使用全局,会话和下一个事务范围级别的特征设置交易如前所述。也可以直接使用将值分配给的声明transaction_isolation.transaction_read_only系统变量:

下表显示了每个表格设置的特征范围设置交易和可变分配语法。

表13.9设置事务特征的事务语法

句法 受影响的特征范围
设置全局事务transaction_characteristic 全球的
设置会话事务transaction_characteristic 会议
设置交易transaction_characteristic 下一个交易只

表13.10事务特征的SET语法

句法 受影响的特征范围
设置全球var_name.=价值 全球的
设置@@ global。var_name.=价值 全球的
设定坚持var_name.=价值 全球的
设置@@ persist。var_name.=价值 全球的
设置persist_only.var_name.=价值 没有运行时效果
设置@@PERSIST_ONLY。var_name.=价值 没有运行时效果
设置会话var_name.=价值 会议
设置@@会话。var_name.=价值 会议
var_name.=价值 会议
放 @@var_name.=价值 下一个交易只

可以在运行时检查全局和会话值的事务特征:

选择@@ global.transaction_isolation,@@ global.transaction_read_only;选择@@ sessient.transaction_isolation,@@ session.transaction_read_only;