数据库并发事务存在的三个问题(脏读、不可重复读、幻读)

时间:2022-02-19 04:35:38

如果不考虑事务隔离性,可能会发生以下情况

脏读:事务a,读到了事务b未提交的数据,如果事务a读到了事务b的一些中间数据,待处理的数据。b事务数据还没有提交,就被a事务访问了

(解决方法:将 读未提交 级别提高到 读已提交 例如:orale在事务a 更新t表的时候,表t为锁住的状态,事务a未提交之前,事务b就不能访问t表)

不可重复读:指的是事务两次读取数据不一样。因为中间被其他事务修改了。解决方法就是 将 级别提高到 可重复。使用行级锁,锁定当前记录,其它事务无法更改。针对update操作

幻读:一个事务在查询,另一个事务在做插入或者删除,此时就会出现幻读。导致表的总行数不一致的情况

 

事务的干扰级别:读未提交、读已提交、可重复读、串行化。

 

参考博客:

https://blog.csdn.net/fanzhigang0/article/details/93198059