设置[全局|会话]交易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
系统变量:
设置交易
允许可选全球的
和会议
关键字:设置不同范围级别的交易特征。这
放
为分配价值的陈述transaction_isolation.
和transaction_read_only
系统变量具有在不同范围级别设置这些变量的语法。
下表显示了每个表格设置的特征范围设置交易
和可变分配语法。
表13.9设置事务特征的事务语法
句法 | 受影响的特征范围 |
---|---|
设置全局事务 |
全球的 |
设置会话事务 |
会议 |
设置交易 |
下一个交易只 |
表13.10事务特征的SET语法
句法 | 受影响的特征范围 |
---|---|
设置全球 |
全球的 |
设置@@ global。 |
全球的 |
设定坚持 |
全球的 |
设置@@ persist。 |
全球的 |
设置persist_only. |
没有运行时效果 |
设置@@PERSIST_ONLY。 |
没有运行时效果 |
设置会话 |
会议 |
设置@@会话。 |
会议 |
放 |
会议 |
放 @@ |
下一个交易只 |
可以在运行时检查全局和会话值的事务特征:
选择@@ global.transaction_isolation,@@ global.transaction_read_only;选择@@ sessient.transaction_isolation,@@ session.transaction_read_only;