[b]脏读(Dirty Read):[/b]
事务T1更新了数据还未提交,这时事务T2来读取相同的数据,则T2读到的数据其实是错误的数据,即脏数据。基于脏数据所作的操作是不可能正确的
[b]丢失更新:(Lost Update)[/b]
事务T1读取了数据,并执行了一些操作,然后更新数据。事务T2也做相同的事,则T1和T2更新数据时可能会覆盖对方的更新,从而引起错误。
[b]不可重复读(Nonrepeatable Read)[/b]
一个事务的两次读取中,读取相同的资源得到不同的值。当事务T2在事务T1的两次读取之间更新数据,则会发生此种错误(重点在修改)
[b]幻读(Phantom):[/b]
此概念相对难理解一些。
事务T1对一定范围内执行操作,T2对相同的范围内执行不兼容的操作,这时会发生幻读。
如:T1删除符合条件C1的所有数据,T2又插入了一些符合条件C1的数据,则在T1中再次查找符合条件C1的数据还是可以查到,这对T1来说好像是幻觉一样,这时的读取操作称为幻读。(重点在新增或删除)
事务T1更新了数据还未提交,这时事务T2来读取相同的数据,则T2读到的数据其实是错误的数据,即脏数据。基于脏数据所作的操作是不可能正确的
[b]丢失更新:(Lost Update)[/b]
事务T1读取了数据,并执行了一些操作,然后更新数据。事务T2也做相同的事,则T1和T2更新数据时可能会覆盖对方的更新,从而引起错误。
[b]不可重复读(Nonrepeatable Read)[/b]
一个事务的两次读取中,读取相同的资源得到不同的值。当事务T2在事务T1的两次读取之间更新数据,则会发生此种错误(重点在修改)
[b]幻读(Phantom):[/b]
此概念相对难理解一些。
事务T1对一定范围内执行操作,T2对相同的范围内执行不兼容的操作,这时会发生幻读。
如:T1删除符合条件C1的所有数据,T2又插入了一些符合条件C1的数据,则在T1中再次查找符合条件C1的数据还是可以查到,这对T1来说好像是幻觉一样,这时的读取操作称为幻读。(重点在新增或删除)
本文详细解释了数据库事务处理中常见的四种并发问题:脏读、丢失更新、不可重复读及幻读,通过具体场景帮助理解这些概念及其产生的原因。
2604

被折叠的 条评论
为什么被折叠?



