读取已提交和可重复读取为什么都给出相同的结果Mysql?

时间:2018-07-11 12:55:38

标签: mysql database transactions isolation-level

我了解页面上针对隔离级别给出的“脏读”和“幻读”示例。但是我不确定如何对以下两种情况进行分类:两个事务级别给出相同的输出。那么哪个隔离级别导致幻像读取

第1部分(READ COMMITTED隔离)

START TRANSACTION;
SET SESSION TRANSACTION ISOLATION LEVEL  READ COMMITTED;

SELECT * FROM Web_User WHERE `Web_User`.`UserID` > 860 FOR UPDATE;;

INSERT INTO Web_User VALUES(865,1,'xx@gmail.com',2,'PMXLIVE','PmxPBX',7,11,'2017-11-24 16:46:35',1066);

UPDATE Web_User SET Username='2' WHERE UserID=864;

 SELECT SLEEP(10);
SELECT * FROM Web_User WHERE `Web_User`.`UserID` > 860 FOR UPDATE;

事务2(可重复读取隔离)

 START TRANSACTION;
SET SESSION TRANSACTION ISOLATION LEVEL  REPEATABLE READ;
SELECT * FROM Web_User WHERE `Web_User`.`UserID` > 860 FOR UPDATE;;

INSERT INTO Web_User VALUES(865,1,'xx@gmail.com',2,'PMXLIVE','PmxPBX',7,11,'2017-11-24 16:46:35',1066);

UPDATE Web_User SET Username='2' WHERE UserID=864;

 SELECT SLEEP(10);
SELECT * FROM Web_User WHERE `Web_User`.`UserID` > 860 FOR UPDATE; 

根据我的理解,两种输出如何给出相同的结果mysql是为REPEATABLE READ创建间隙锁和快照,从而给出相同的结果。 参考下面的链接

https://www.percona.com/blog/2012/08/28/differences-between-read-committed-and-repeatable-read-transaction-isolation-levels/

0 个答案:

没有答案