官网地址:MySQL :: MySQL 5.7 Reference Manual :: 13.3.6 SET TRANSACTION Statement
欢迎关注留言,我是收集整理小能手,工具翻译,仅供参考,笔芯笔芯.
SET [GLOBAL | SESSION] TRANSACTIONtransaction_characteristic [, transaction_characteristic] ...transaction_characteristic: {ISOLATION LEVEL level| access_mode
}level: {REPEATABLE READ| READ COMMITTED| READ UNCOMMITTED| SERIALIZABLE
}access_mode: {READ WRITE| READ ONLY
}
此语句指定 交易 特点。它需要一个由逗号分隔的一个或多个特征值的列表。每个特征值设置事务 隔离水平 或者进入模式。隔离级别用于InnoDB 表格。访问模式指定事务是否以读写模式运行。
另外,SET TRANSACTION 可包括一个可选的GLOBAL
或 SESSION
表明声明范围的关键词。
-
交易隔离级别
-
交易存取模式
-
交易特征范围
要设置事务隔离级别,请使用 条款。不允许指定多个 同样的条款 声明。 ISOLATION LEVEL
level
ISOLATION LEVEL
SET TRANSACTION
默认隔离级别是 REPEATABLE READ .其他认可值READ COMMITTED ,READ UNCOMMITTED ,以及 SERIALIZABLE .有关这些隔离级别的信息,请参阅 14.7.2.1节,"事务隔离级别" .
要设置事务访问模式,请使用READ WRITE
或READ ONLY
条款。不允许在同一场合指定多个存取模式条款SET TRANSACTION 声明。
默认情况下,事务以读写方式进行,允许对事务中使用的表进行读写。此模式可明确指定使用 SET TRANSACTION 有进入模式的READ WRITE
.
如果事务访问模式设置为READ ONLY
)禁止更改表格。这可能使存储引擎能够在不允许写入时进行性能改进。
在只读模式下,仍然可以更改使用TEMPORARY
使用DML语句的关键词。不允许对DDL语句进行更改,就像对永久表一样。
…READ WRITE
和READ ONLY
还可为使用 START TRANSACTION 声明。
您可以为当前会话或下一个事务设置全局事务特性:
-
与…
GLOBAL
关键词:-
该声明在全球适用于以后的所有会议。
-
现有会议不受影响。
-
-
与…
SESSION
关键词:-
此语句适用于在本届会议期间执行的所有后续事务。
-
此语句允许在事务中进行,但不影响当前正在进行的事务。
-
如果在事务之间执行,则此语句将覆盖设置指定特性的下一个事务值的任何先前语句。
-
-
没有
SESSION
或GLOBAL
关键词:-
语句只适用于在会话中执行的下一个事务。
-
后续事务恢复到使用指定特征的会话值。
-
在下列交易中不允许有此说明:
mysql> START TRANSACTION; Query OK, 0 rows affected (0.02 sec)mysql> SET TRANSACTION ISOLATION LEVEL SERIALIZABLE; ERROR 1568 (25001): Transaction characteristics can't be changed while a transaction is in progress
-
改变全局交易特性需要 SUPER 特权。任何会话都可以自由地更改其会话特性(即使在事务的中间),或其下一个事务的特性(在事务开始之前)。
要在服务器启动时设置全局隔离级别,请使用 选项在命令行或一个选项文件中.价值观 对于这个选项,使用破折号而不是空格,所以允许值是 , , ,或 . --transaction-isolation=levellevel
READ-UNCOMMITTEDREAD-COMMITTEDREPEATABLE-READSERIALIZABLE
同样,要在服务器启动时设置全局事务访问模式,请使用 --transaction-read-only 选择。默认情况是OFF
(读/写方式)但是值可以设置为ON
只为一种方式。
例如,将隔离级别设置为 REPEATABLE READ 以及进入READ WRITE
,使用这些线[mysqld]
一个选项文件的部分:
[mysqld]
transaction-isolation = REPEATABLE-READ
transaction-read-only = OFF
在运行时,全局、会话和下事务范围级别的特性可以使用 SET TRANSACTION 声明,如前所述。也可以直接使用 SET 将价值分配给 transaction_isolation 和 transaction_read_only 系统变量:
-
SET TRANSACTION 可选择的许可证
GLOBAL
和SESSION
在不同范围级别设置事务特性的关键词。 -
… SET 分配价值给 transaction_isolation 和 transaction_read_only 系统变量具有在不同的范围级别设置这些变量的语法。
下表显示每个系统设置的特征范围级别SET TRANSACTION 以及可变分配语法。
表13.6对事务特性的一套事务语法
语法的 | 受影响特征范围 |
---|---|
SET GLOBAL TRANSACTION | 全球的 |
SET SESSION TRANSACTION | 会议 |
SET TRANSACTION | 下一次交易 |
关于事务特性的一套语法
语法的 | 受影响特征范围 |
---|---|
SET GLOBAL | 全球的 |
SET @@GLOBAL. | 全球的 |
SET SESSION | 会议 |
SET @@SESSION. | 会议 |
SET | 会议 |
SET @@ | 下一次交易 |
可以在运行时检查事务特性的全局值和会话值:
<span style="background-color:#ffffff"><span style="color:#555555"><span style="background-color:#f8f8f8"><span style="color:#000000"><code class="language-sql"><span style="color:#0077aa">SELECT</span> <span style="background-color:inherit"><span style="color:#ee9900"><strong><em>@@GLOBAL.transaction_isolation</em></strong></span></span><span style="color:#999999">,</span> <span style="background-color:inherit"><span style="color:#ee9900"><strong><em>@@GLOBAL.transaction_read_only</em></strong></span></span><span style="color:#999999">;</span>
<span style="color:#0077aa">SELECT</span> <span style="background-color:inherit"><span style="color:#ee9900"><strong><em>@@SESSION.transaction_isolation</em></strong></span></span><span style="color:#999999">,</span> <span style="background-color:inherit"><span style="color:#ee9900"><strong><em>@@SESSION.transaction_read_only</em></strong></span></span><span style="color:#999999">;</span></code></span></span></span></span>
在mysql5.7.20之前,使用 tx_isolation 和 tx_read_only 与其说 transaction_isolation 和 transaction_read_only .