数据库并发操作带来的问题以及解决方案

本文探讨了数据库并发操作可能引发的问题,如丢失修改、不可重复读(包含幻读)、读脏数据等,并介绍了如何通过锁定机制解决这些问题。文章还详细解释了锁的不同类型,以及封锁可能导致的活锁和死锁现象,最后提出了预防和解决死锁的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

数据库并发操作带来的数据不一致性主要有, 丢失修改,不可重复读(里面包括幻读),读脏数据

其中不可重复读有三种情况,后两种称为幻读,幻读和不可重复读的区别是幻读是对数据的删除增添,不可重复读是数据的修改

解决办法 封锁

锁包括 排它锁(X锁)和共享锁(S锁)

封锁带来的问题 :活锁(先来先服务解决),死锁

死锁解决方案:预防死锁,定期检测死锁解除死锁

预防:1 一次封锁法 ,问题降低并发度

            2 顺序封锁法,问题是封锁顺序开销大,二是事务的封锁请求可以随着事务的执行而动态决定

检测和解除:

      检测:1 超时等待法,问题  1 误判死物,二是设置时间太长,会导致死锁长时间检测不到

                  2 等待图法, 事务等待图是一个有向图G=(T,U),T为结点的集合,每个结点表示正运行的事务,u为边的几何,每条边表示事务等待的情况,若T1等待T2,则T1,T2之间有一条有向边,从T1指向T2,事务等待图动态的反映了所有事务的等待情况,并发控制子系统周期性的生成事务等待图,并进行检测,如果发现图中存在回路,则表示系统中出现了死锁。

死锁的解除:选择一个处理死锁代价最小的事务,将其撤销,释放次事务持有的所有锁,使其他事务得以继续运行下去,当然,对撤销的事务所执行的数据修改操作必须加以恢复。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值