MySQL5.7 Read Committed事务隔离级别的研究-出现幻读
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL5.7 Read Committed事务隔离级别的研究-出现幻读相关的知识,希望对你有一定的参考价值。
事务隔离级别为Read Committed的情况下:
事务2不执行commit,可以读取到事务1新添加的记录。此处说明出现了幻读。
当事务隔离级别改为REPEATABLE-READ后,能够解决该问题即解决幻读。
幻读定义:一个事务按相同的查询条件重新读取以前检索过的数据,却发现其他事务插入了满足其查询条件的新数据。
session1执行事务1:只插入和提交
mysql> select @@global.tx_isolation;select @@tx_isolation;
+-----------------------+
| @@global.tx_isolation |
+-----------------------+
| READ-COMMITTED |
+-----------------------+
1 row in set (0.01 sec)
+----------------+
| @@tx_isolation |
+----------------+
| READ-COMMITTED |
+----------------+
1 row in set (0.00 sec)
mysql> start transaction;
Query OK, 0 rows affected (0.00 sec)
mysql> select * from sun;
+--------+------+
| name | age |
+--------+------+
| summer | 26 |
+--------+------+
1 row in set (0.00 sec)
mysql> insert into sun values(‘aa‘,‘88‘);
Query OK, 1 row affected (0.00 sec)
mysql> commit;
session2执行事务2:只查询
mysql> select @@global.tx_isolation;select @@tx_isolation;
+-----------------------+
| @@global.tx_isolation |
+-----------------------+
| READ-COMMITTED |
+-----------------------+
1 row in set (0.00 sec)
+----------------+
| @@tx_isolation |
+----------------+
| READ-COMMITTED |
+----------------+
1 row in set (0.00 sec)
mysql> start transaction;
Query OK, 0 rows affected (0.00 sec)
mysql> select * from sun;
+--------+------+
| name | age |
+--------+------+
| summer | 26 |
| aa | 88 |
+--------+------+
以上是关于MySQL5.7 Read Committed事务隔离级别的研究-出现幻读的主要内容,如果未能解决你的问题,请参考以下文章
sql server 事务隔离性 snapshot read committed说明
MySQL事务Read Committed隔离级别的数据可见性
read repeatable&read committed 区别
MySQL5.7 Repeatable read事务隔离级别的研究。
带有 nolocks 和 TRANSACTION ISOLATION LEVEL READ COMMITTED 的 SQL 事务