摘要: 数据库并发操作存在的异常情况:
1.更新丢失(LostUpdate):
A和B事务并发执行,A事务执行更新后,提交;B事务在A事务更新后,B事务结束前也做了对该行数据的更新操作,然后回滚,则两次更新操作都丢失了。
第一类丢失更新(回滚丢失,Lost update)。
在事务A期间,事务B对数据进行了更新;在事务A撤销之后,覆盖了事务B已经提交的数据。
SQL92没有定义这种现象,标准定义的所有隔离界别都不允许第一类丢失更新发生。
第二类丢失更新(覆盖丢失/两次更新问题,Second lost update)。
在事务A期间,事务B对数据进行了更新;在事务A提交之后,覆盖了事务B已经提交的数据。
第二类丢失更新,实际上和不可重复读是同一种问题。
2.脏读取(DirtyReads):
A和B事务并发执行,B事务执行更新后,A事务查询B事务没有提交的数据,B事务回滚,则A事务得到的数据不是数据库中的真实数据。也就是脏数据,即和数据库中不一致的数据。
3.不可重复读取
阅读全文