11并发控制

并发控制

事务一个一个串行执行,每个时刻只有一个事务,允许事务并发执行
并发操作破坏了事务的隔离性。导致:丢失修改,不可重复读,读脏数据
并发控制机制就是要用正确的方式调度并发操作,使一个用户的执行不受其他事务影响
数据库的应用优势可以允许不一致性
并发控制技术:封锁,时间戳,乐观控制法,多版本并发控制

11.2 封锁

封锁类型:排他锁(x),共享锁(s)

  1. 排他锁:写锁,事务对数据对象A加上X锁,其他事务就不能读取修改对象A
  2. 共享锁,读锁,其他事务可以读,其他事务不能加X,只能读

11.3封锁协议

规则:何时申请X锁,S锁,持锁事件,释放,封锁协议
封锁协议为三级
1.一级锁协议:事务T在修改数据R之前必须加X锁,直到事务结束后释放,结束包含,commmit,rollback.仅仅读数据不修改不对其加锁,不能保证可重复读和读脏数据
2. 二级协议:事务T在读取数据R必须对其加S锁,读完后释放,不保证可重复读
3. 三级协议:事务T在读取数据R必须对其加S锁,事务结束释放

11.4 活锁和死锁

11.4.1活锁

多个锁时,导致一个锁始终等待,避免活锁的方法采用先来先服务

11.4.1死锁 事务永远不结束

预防死锁方法:

  1. 一次封锁法:一次将要使用的数据全部加锁:缺点,降低并发性
  2. 顺序封锁法:
    死锁的诊断与解除
  • 超时法
  • 等待图法,存在回路,出现死锁#

11.5并发调度的可串行性

数据库管理系统对并发事务不同的调度可能产生不同的结果,串行调度时正确的

11.5.1 可串行化调度
11.5.2冲突 可串行化调度

冲突操作是指不同的事务对同一数据的读写和写写操作
如何使用封锁机制产生可串行化调度

11.6两段锁协议

调图时可串行化的,使用两段锁协议方法实现调度可串行化
两段锁:事务分为两个阶段对数据加锁和解锁

  • 在读写操作之前,申请并获得对数据的封锁
  • 释放一个锁之后,事务不在申请和获得任何其他封锁所

11.7 封锁的粒度

封锁对象的大小为粒度:逻辑单元:属性值,其集合,元组,关系,索引项。物理单元:叶,物理记录。

11.7.1 多粒度封锁

多粒度树,显示封锁,隐式封锁,检查是否冲突

11.7.2 意向锁

意向锁:如果对一节点加意向锁,说明节点的下层节点在被枷锁,对任意节点加锁时,必须对其上层节点加锁。
三种意向锁:is锁ixsix

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值