数据库隔离级别

(一)可读取未确认(Read uncommitted)数据库

写事务阻止其余写事务,避免了更新遗失。可是没有阻止其余读事务。并发

存在的问题:脏读。即读取到不正确的数据,由于另外一个事务可能还没提交最终数据,这个读事务就读取了中途的数据,这个数据多是不正确的。事务

解决办法就是下面的“可读取确认”。it

(二)可读取确认(Read committed)table

写事务会阻止其余读写事务。读事务不会阻止其余任何事务。数据

存在的问题:不可重复读。即在一次事务之间,进行了两次读取,可是结果不同,可能第一次id为1的人叫“李三”,第二次读id为1的人就叫了“李四”。由于读取操做不会阻止其余事务。tab

解决办法就是下面的“可重复读”。co

(三)可重复读(Repeatable read)错误

存在的问题:幻读。当事务开启的时候,默认读的是此时数据库中的数据。假设读到了10条,而后进行更新操做了10条,惊奇的发现更新了20条。是由于其余地方插入了10条数据,致使了事务中的幻读,觉得只更新了读到了10条。实则他更新了数据库中的全部知足数据。ab

(四)可串行化(Serializable)

读加共享锁,写加排他锁。这样读取事务能够并发,可是读写,写写事务之间都是互斥的,基本上就是一个个执行事务,因此叫串行化。

如有错误,恳请指正,万分感谢!!!

相关文章
相关标签/搜索