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

   

一、查看当前 MySQL 版本号


select version();
   
   

 

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

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


select @@global.tx_isolation;
   
       

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 全局默认事务隔离级别

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

 

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