数据库的四种隔离模式

上学的时候,我一直搞不清这四种事务隔离模式,read uncommited 和 serialization还比较好理解,第一个叫脏读,就是别人没提交的东西我就读了,最后一个是序列化,就是不管你读写都加锁(一般读是共享锁),排队。可是read commited 和 repeatable-read就难理解了,read commited不知道叫什么,我理解为别人提交的我能读,但是书上说这有个问题,就是两次读同一数据可能结果不一样,名之曰不可重复读,而repeatable-read是可重复读,但有个问题叫幻读,那这两个有什么区别呢?本吊想了很久都没明白,一直很糊涂这个幻读和不可重复读的区别,后来偶尔看一个叫MVCC的东西,忽然感觉明白了幻读和不可重复读的区别,read commited 和 repeatable-read的区别是后者可以重复读,也就是第一次和第二次读同一个数据,结果是一样的,注意这里有个条件是这个数据是已经存在的,只要是存在的数据都可以做多版本的,所以两种隔离模式的区别是一个做了多版本控制,而另一个没有做;也是因为多版本的原因,可重复读虽然解决了已经存在数据的一致性,但是没有办法阻止数据的产生,所以就有了幻读。变态的序列化因为阻止了同时读写,所以就不存在各种问题了,当然速度就下来了。

当然从我的分析来看,是很不符合逻辑的,因为理论上是先有的四种事务隔离模式,然后才有的MVCC,不过多亏这个东西,我终于搞清楚了不可重复读和幻读的区别。

你可能感兴趣的:(数据库的四种隔离模式)