简述数据库并发 *** 作通常会带来哪些问题

简述数据库并发 *** 作通常会带来哪些问题,第1张

数据事务并发带来的问题有:更新丢失、脏读、不可重复读、幻象读。假设张三办了一张招商yhk,余额100元,分别说明上述情况。

1、更新丢失:一个事务的更新覆盖了另一个事务的更新。事务A:向yhk存钱100元。事务B:向yhk存钱200元。A和B同时读到yhk的余额,分别更新余额,后提交的事务B覆盖了事务A的更新。更新丢失本质上是写 *** 作的冲突,解决办法是一个一个地写。

2、脏读:一个事务读取了另一个事务未提交的数据。事务A:张三妻子给张三转账100元。事务B:张三查询余额。事务A转账后(还未提交),事务B查询多了100元。事务A由于某种问题,比如超时,进行回滚。事务B查询到的数据是假数据。脏读本质上是读写 *** 作的冲突,解决办法是写完之后再读。

3、不可重复读:一个事务两次读取同一个数据,两次读取的数据不一致。事务A:张三妻子给张三转账100元。事务B:张三两次查询余额。事务B第一次查询余额,事务A还没有转账,第二次查询余额,事务A已经转账了,导致一个事务中,两次读取同一个数据,读取的数据不一致。不可重复读本质上是读写 *** 作的冲突,解决办法是读完再写。

4、幻象读:一个事务两次读取一个范围的记录,两次读取的记录数不一致。事务A:张三妻子两次查询张三有几张yhk。事务B:张三新办一张yhk。事务A第一次查询yhk数的时候,张三还没有新办yhk,第二次查询yhk数的时候,张三已经新办了一张yhk,导致两次读取的yhk数不一样。幻象读本质上是读写 *** 作的冲突,解决办法是读完再写。

大致会产生三类:1、丢失更新2、不可重复读3、读“脏”数据。解决方法:封锁:排他锁(X锁),共享锁(S锁),三级封锁协议,两段锁协议(2PL),其他的我也不清楚了,这些也是我在书上看的,不要见怪!

并发 *** 作带来的数据不一致性包括三类:丢失修改、不可重复读和读“脏”数据。

避免不一致性的方法和技术就是并发控制,最常用的技术是封锁技术;也可以用其他技术,例如在分布式数据库系统中可以采用时间戳方法来进行并发控制。

丢失修改:两个事务T1和T2读入同一数据并修改,T2提交的结果破坏了(覆盖了)T1提交的结果,导致T1的修改被丢失。

不可重复读:不可重复读是指事务T1读取数据后,事务T2执行更新 *** 作,使T1无法再现前一次读取结果。

读“脏”数据:读“脏”数据是指事务T1修改某一数据,并将其写回磁盘,事务T2读取同一数据后,T1由于某种原因被撤销,这时T1已修改过的数据恢复原值,T2读到的数据就与数据库中的数据不一致,则T2读到的数据就为“脏”数据,即不正确的数据。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/9781741.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存