前面我们了解了MySQL事务和四种隔离级别,以及各个级别会导致的一些问题,不了解的可以戳这里:高性能MySQL学习一(逻辑架构、并发控制、事务、四种隔离级别、多版本并发控制MVCC),今天我们通过例子来直观的感受一下.
首先声明一下,这里安装的是MySQL8,那么我们先来查看一下MySQL的默认隔离级别
mysql> select @@version; //MySQL版本
+-----------+
| @@version |
+-----------+
| 8.0.17 |
+-----------+
1 row in set (0.00 sec)
mysql> select @@global.transaction_isolation; //全局隔离级别
mysql> select @@transaction_isolation; //当前会话的隔离级别
mysql> select @@global.transaction_isolation,@@transaction_isolation;
+--------------------------------+-------------------------+
| @@global.transaction_isolation | @@transaction_isolation |
+--------------------------------+-------------------------+
| REPEATABLE-READ | REPEATABLE-READ |
+--------------------------------+-------------------------+
1 row in set (0.00 sec)
这里还是把四种隔离级别以及会造成的问题列个表
脏读 | 不可重复读 | 幻读 | |
---|---|---|---|
Read uncommitted | √ | √ | √ |
Read committed | × | √ | √ |
Repeatable read | × | × | √ |
Serializable | × | × | × |
√:可能出现 ×:不会出现
1、未提交读(Read uncommi