事務隔離級別爲Repeatable read的情況下
事務2不執行commit,讀取不到事務1新添加的記錄。
事務2執行了commit,可以讀取到事務1新添加的記錄。
session1執行事務1:只插入和提交
mysql> select @@tx_isolation;
+-----------------+
| @@tx_isolation |
+-----------------+
| REPEATABLE-READ |
+-----------------+
1 row in set (0.00 sec)
mysql>
mysql> start transaction;
Query OK, 0 rows affected (0.00 sec)
mysql> select * from lisa;
+------------+------+
| name | age |
+------------+------+
| lisa | 99 |
| sunlongwei | 27 |
| shabala | 999 |
| balabala | 9999 |
| balabala | 9999 |
| hehe | 9999 |
| hehe | 9999 |
| bb | 1 |
| bb | 2 |
| bb | 3 |
+------------+------+
10 rows in set (0.00 sec)
mysql> insert into lisa values('aa','9999');
Query OK, 1 row affected (0.00 sec)
mysql> insert into lisa values('cc','9999');
Query OK, 1 row affected (0.00 sec)
mysql> commit;
Query OK, 0 rows affected (0.00 sec)
mysql> select * from lisa;
+------------+------+
| name | age |
+------------+------+
| lisa | 99 |
| sunlongwei | 27 |
| shabala | 999 |
| balabala | 9999 |
| balabala | 9999 |
| hehe | 9999 |
| hehe | 9999 |
| bb | 1 |
| bb | 2 |
| bb | 3 |
| aa | 9999 |
| cc | 9999 |
+------------+------+
12 rows in set (0.00 sec)
session2執行事務2:只查詢和提交
mysql> start transaction;
Query OK, 0 rows affected (0.00 sec)
mysql> select * from lisa;
+------------+------+
| name | age |
+------------+------+
| lisa | 99 |
| sunlongwei | 27 |
| shabala | 999 |
| balabala | 9999 |
| balabala | 9999 |
| hehe | 9999 |
| hehe | 9999 |
| bb | 1 |
| bb | 2 |
| bb | 3 |
+------------+------+
10 rows in set (0.00 sec)
//事務2如果不提交則無法查詢到事務1中插入的記錄
mysql> commit;
Query OK, 0 rows affected (0.00 sec)
mysql> select * from lisa;
+------------+------+
| name | age |
+------------+------+
| lisa | 99 |
| sunlongwei | 27 |
| shabala | 999 |
| balabala | 9999 |
| balabala | 9999 |
| hehe | 9999 |
| hehe | 9999 |
| bb | 1 |
| bb | 2 |
| bb | 3 |
| aa | 9999 |
| cc | 9999 |
+------------+------+
//事務2提交後可以查詢到事務1中插入的記錄