如何设置事务隔离级别(MySQL)

问题描述 投票:0回答:4

如何设置MySQL 5.1 InnoDB的隔离级别?

输入:

mysql> 显示类似 '%isola%' 的变量;

InnoDB 设置的默认级别是可重复读。
如何更改隔离级别?

mysql database transactions innodb isolation-level
4个回答
65
投票
SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED

SESSION
是可选的,仅将设置限制为当前会话。
READ UNCOMMITTED
替换为您想要的级别。

https://dev.mysql.com/doc/refman/8.0/en/set-transaction.html


7
投票

您可以设置 4 个事务隔离级别和 4 个范围,如下所示。 *更多详情可以查看13.3.7 SET TRANSACTION声明

使用

PERSIST
范围,即使重启MySQL后事务隔离级别也不会重置:

SET PERSIST TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;

或者:

SET PERSIST transaction_isolation = 'READ-UNCOMMITTED';

使用

GLOBAL
范围,事务隔离级别在重启MySQL后重置:

SET GLOBAL TRANSACTION ISOLATION LEVEL READ COMMITTED;

或者:

SET GLOBAL transaction_isolation = 'READ-COMMITTED';

使用

SESSION
范围,事务隔离级别在注销MySQL后重置:

SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ;

或者:

SET SESSION transaction_isolation = 'REPEATABLE-READ';

在没有范围的情况下,事务隔离级别在执行下一个事务后重置:

SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;

或者:

SET transaction_isolation = 'SERIALIZABLE';

6
投票

将会话变量添加到连接字符串

连接 mysql 数据库时,只需将其添加到连接字符串即可。

?sessionVariables=transaction_isolation='READ-COMMITTED'

您可以检查其他隔离级别的值。


-2
投票

我的默认隔离级别也是可重复读取,在上面的示例中,您可以为当前会话更改它,但如果您想完全更改它,您可以尝试使用以下命令:

SET TRANSACTION ISOLATION LEVEL REPEATABLE READ;

在Mysql服务器版本上测试:5.7.23-0ubuntu0.18.04.1 (Ubuntu)

© www.soinside.com 2019 - 2024. All rights reserved.