目录

MySQL 修改默认事务隔离级别

MySQL 的四种事务隔离级别 / 如何切换 MySQL 的默认全局事务隔离级别 / 了解 session 和 global 关键字

一、查看当前 MySQL 版本号

select version();

二、查看当前全局事务隔离级别

2.1、MySQL5.6 及其更早的版本

select @@global.tx_isolation;

2.2、MySQL5.7 及更高版本

select @@global.transaction_isolation;

1、MySQL5.7 引入了 transaction_isolation 用来代替 tx_isolation,并在 MySQL8.0.3 去掉了 tx_isolation,在 MySQL5.7 及更高版本中建议使用 transaction_isolation

2、若要查看当前会话的事务隔离级别,可以去掉 global. 使用 SELECT @@transaction_isolation。同理,若只想针对当前 session 设置事务隔离级别,可将 global 关键字替换为 session

三、MySQL 的四个事务隔离级别

| 事务隔离级别 | 脏读 | 不可重复读 | 幻读 | | —- | —- | | 读未提交(read-uncommitted) | 是 | 是 | 是 | | 读提交(read-committed) | 否 | 是 | 是 | | 可重复读(repeatable-read) | 否 | 否 | 是 | | 串行化(serializable) | 否 | 否 | 否 |

四、修改 MySQL 全局默认事务隔离级别

4.1、MySQL5.6 及其更早的版本

set global tx_isolation='read-uncommitted';
set global tx_isolation='read-committed';
set global tx_isolation='repeatable-read';
set global tx_isolation='serializable';

4.2、MySQL5.7 及更高版本

set global transaction_isolation='read-uncommitted';
set global transaction_isolation='read-committed';
set global transaction_isolation='repeatable-read';
set global transaction_isolation='serializable';