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

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

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

解决办法 封锁

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

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

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

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

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

检测和解除:

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

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

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

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值