mysql innodb引擎四种隔离级别和锁的总结

1.read uncommitted未提交读  

用户可以读取到当前未提交的数据 属于脏读QAQ  没啥用

2.read committed 不可重复读(RC)

用户不会再出现脏读的情况,但是RC模式下,会出现重复读而结果不同的情况。

ex:

T1:select * from test;

T2:insert into test values (1,'aa');

T1:select * from test;

T1两次读取的过程结果不同。

3.repeatable read 可重复读(RR)

在innodb中使用了快照的方式,当前事务不会读取其他事务的修改。

T1 select * from test 

T2insert into test values (1,'aa');

T1insert into test values(1,'aa')


但是此处有一个疑惑尚待解决,高性能mysql说Innodb引擎利用mvcc解决了幻读 ,但是根据上述代码,并没有啊,还是在并没有查询到ID为1的情况下,就被阻塞了。这真的解决了吗

T1提交被阻塞。

MVCC的select要满足两个条件

1.只读取创建时间小于或者等于当前版本号的行

2.删除版本要么比当前事务ID大,要么undefined。(确保当前事务开始之前该行未被删除)

4.Serializable

强制串行化。

猜你喜欢

转载自blog.csdn.net/m0_37709297/article/details/80271812