设置tx_isolation与SET TRANSACTION ISOLATION LEVEL

时间:2017-11-30 14:09:09

标签: mysql

在MySQL(特别是5.5)中,似乎我们有两种不同的方法来设置事务隔离级别。我只是想知道我是否正确地认为

SET TRANSACTION ISOLATION LEVEL REPEATABLE READ

完全相同
SET tx_isolation = 'REPEATABLE-READ'

并且对于其他可能的隔离级别也是如此。

编辑1

我还不够精确。 @ danihp的答案是正确的,因为我的问题。但实际上,我打算问一下

SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ

SET SESSION tx_isolation = 'REPEATABLE-READ'

(请注意SET SESSION而非SET)。

它们完全一样吗?

1 个答案:

答案 0 :(得分:3)

服务器系统变量:

您可以使用SET tx_isolation = 'REPEATABLE-READ'服务器系统变量上设置默认隔离级别。 " MySQL服务器维护许多系统变量,指示如何配置" 此变量设置默认事务级别。

当前交易:

您可以使用SET TRANSACTION ISOLATION LEVEL REPEATABLE READ当前交易上将隔离级别从默认级别更改为新级别。

注意:

在MySQL 5.7.20中添加了

" transaction_isolation作为tx_isolation的别名,现已弃用,并在MySQL 8.0中删除。应调整应用程序以优先使用transaction_isolation tx_isolation。"

<强>参考

<强>被修改

您可以使用transactions来&#34;封装&#34;几个陈述作为单一操作。当您start a transaction时,您可以在此时更改此新交易的隔离级别:

START TRANSACTION;
/** change isolation level here with SET TRANSACTION statement 
to avoid default isolation level **/
SELECT @A:=SUM(salary) FROM table1 WHERE type=1;
UPDATE table2 SET summary=@A WHERE type=1;
COMMIT;