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';