如何设置MySQL 5.1 InnoDB的隔离级别?
输入:
mysql> 显示类似 '%isola%' 的变量;
InnoDB 设置的默认级别是可重复读。
如何更改隔离级别?
SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
SESSION
是可选的,仅将设置限制为当前会话。READ UNCOMMITTED
替换为您想要的级别。
https://dev.mysql.com/doc/refman/8.0/en/set-transaction.html
您可以设置 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';
连接 mysql 数据库时,只需将其添加到连接字符串即可。
?sessionVariables=transaction_isolation='READ-COMMITTED'
您可以检查其他隔离级别的值。
我的默认隔离级别也是可重复读取,在上面的示例中,您可以为当前会话更改它,但如果您想完全更改它,您可以尝试使用以下命令:
SET TRANSACTION ISOLATION LEVEL REPEATABLE READ;
在Mysql服务器版本上测试:5.7.23-0ubuntu0.18.04.1 (Ubuntu)