设置MySQL的事务隔离级别

设置MySQL的事务隔离级别,mysql,isolation-level,Mysql,Isolation Level,如何设置MySQL 5.1 InnoDB的隔离级别 输入: mysql>显示变量,如“%isola%” InnoDB的默认级别设置为可重复读取。 如何更改隔离级别 SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED 会话是可选的,只是将设置限制为当前会话。 READ UNCOMMITTED将替换为您所需的级别 我的默认隔离级别也是was REPEATABLE READ(可重复读取)。使用上面的示例,您可以为当前会话更改它,但如果您想

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

输入:

mysql>显示变量,如“%isola%”

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

SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
会话
是可选的,只是将设置限制为当前会话。
READ UNCOMMITTED
将替换为您所需的级别


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

SET TRANSACTION ISOLATION LEVEL REPEATABLE READ;
在Mysql服务器版本5.7.23-0ubuntu0.18.04.1(Ubuntu)上测试

将会话变量添加到连接字符串 当连接到mysql数据库时,只需将其添加到连接字符串中

?sessionVariables=transaction\u isolation='READ-COMMITTED'


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

只是为了让这个答案更加完整:您可以全局设置隔离级别,用于当前会话,或仅用于下一个事务,如此处所述:这是不正确的,您需要添加“全局”。没有任何会话或全局关键字:该语句仅适用于会话中执行的下一个事务。后续事务将还原为使用命名特征的会话值。这可能有效,但不方便。如果您需要对特定查询有更严格的级别,则需要有一个单独的数据源。ORM内部的内置事务或锁定机制(即Hibernate或Batis)存在问题,无法保证多实例场景中的数据一致性。而另一台服务器或应用程序可能会对似乎被“锁定”以进行修改的数据进行过火。