事务隔离级别--脏读,不可重复读,幻读

记录事务的隔离级别以及对于脏读,不可重复读和幻读的理解。


各事务级别能够解决的问题(√:可能出现 ×:不会出现)

隔离级别 脏读 不可重复读 幻读
Read uncommitted
Read committed ×
Repeatable read × ×
Serializable × × ×

Read uncommitted :允许B事务读取A事务中未提交的数据,隔离级别最低。
Read committed :不允许B事务读取A事务中未提交的数据,但是当AB事务交叉进行时,可能会导致A事务两次读取的数据不一致,原因为在A事务两次读取之间,B事务对某个数据进行了修改并且提交成功,这是大多数数据库默认的隔离级别(除MySQL)。
Repeatable read :当A事务开启时,不允许其他事务对A事务读取的数据进行修改(行级锁),避免了不可重复读,但是当A事务读取整张表的内容时,B事务可以进行表数据的插入或者删除,导致A发现所读的表数据不同(例如某张表的COUNT(*)),就像出现了幻读。这个是MySQL默认的隔离级别。
Serializable :隔离级别最高,只允许事务以串行的方式进行,通常不建议采取该隔离级别,效率太低!

参考博客:https://blog.csdn.net/jiesa/article/details/51317164

猜你喜欢

转载自blog.csdn.net/gd_hacker/article/details/80135837