数据库并发存在的四种问题描述

1.更新丢失问题

 

A和B都对数据库中的某个字段进行读写操作。

AB均对数据库的数据进行先读后写的操作。B先读取数据库,进行处理,这时,A也读取数据,处理后接着写入数据。B处理结束,再次写入数据。A的写入会被覆盖掉,这叫做更新丢失。

假设最初数据是2,A和B读取的都是2,A对数据减操作,2-2=0,写入数据变成了0,B接着写入数据,对数据进行加5,2+5=7,最后的结果变成了7.

然而,本该出现的是2-2+5=5.结果A对数据的操作丢失了。这叫数据更新丢失。

 

2.数据的脏读

 

A对数据进行写操作,B仅对数据进行读操作。A对数据写入,写入后事务出现故障,需要回滚,但在回滚前恰好B读取了数据,这个时候B读取的数据属于临时数据,由于A的事务需要回滚,所以B读取的数据并不会被保存到数据库,造成读取错误数据的现象。

假如初始数据是1,A对其修改为2,B在A出现故障前读取到B修改的数据2,但是A事务出现故障,需要回滚,回滚到原来的1,这时候B读取的2就是错误的数据,这就是脏读。

 

3.错误求和

 

A读取数据库中的数据,B在A读取过程中操作数据,A读到的是部分更新前和部分更新后的数据,这样进行求和操作的时候,出现的是不完全更新的数据。

 

4.不可重复读

 

类似错误求和,A两次对同一条数据进行读取,两次读取期间B对数据进行了更新,导致A前后两次读取到不同的数据。


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部