加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

db并发控制_notes

发布时间:2020-12-12 14:44:33 所属栏目:MsSql教程 来源:网络整理
导读:? ·11.1 并发控制概述11.2 封锁(Locking) ·11.3 活锁和死锁 ·11.4 并发调度的可串行性 ·11.5 两段锁协议 ·11.6 封锁的粒度 ? ? ? ? 11.1 并发控制概述11.2 封锁(Locking) ? ·多事务执行方式 : ·(1)事务串行执行 ·(2)交叉并发方式 ·(3)同时并发方式

隔离级别

脏读

丢失修改(虚读)

不可重复读取

幻影(不可重复读取的两种情况)

未提交读

不能避免

不能避免

不能避免

不能避免

提交读

能避免

不确定

不能避免

不能避免

可重复读

能避免

能避免

能避免

不能避免

可串行读

能避免

能避免

能避免

能避免

? ? ? ? ·SET TRANSACTION ISOLATION LEVEL ·READ UNCOMMITTED ·READ COMMITTED ·REPEATABLE READ ·SERIALIZABLE ? ? ? ? ? ? ? ? ? ? ? 活锁和死锁 ? 避免活锁 采用先来先服务的策略(队列) 解决死锁 ·1. 采取一定措施预防死锁的发生。 2. 允许死锁发生,采取一定方法诊断死锁、解除死锁。 ? ·死锁的预防·一次封锁法 ·要求每个事务必须一次将所有要使用的数据全部加锁,否则就不能继续执行 ·一次封锁法存在的问题: ·将以后要用到的全部数据加锁,势必扩大了封锁的范围,从而降低了系统的并发度。 ·顺序封锁法: ·预先对数据对象规定一个封锁顺序,所有事务都按这个顺序实行封锁。 ·顺序封锁法存在的问题 ·数据库系统中可封锁的数据对象极其众多,而且还在不断变化,要维护这样极多而且变化的资源的封锁顺序非常困难,成本很高。 事务的封锁请求可以随着事务的执行而动态地决定,很难事先确定每一个事务要封锁哪些对象,因此也就很难按规定的顺序去施加封锁。 ? ·死锁的诊断·超时法: ·如果一个事务的等待时间超过了规定的时限,就认为发生了死锁 ·优点:实现简单 ·缺点 ·有可能误判死锁。 ·时限若设置得太长,死锁发生后不能及时发现。 ·等待图法: ·用事务等待图动态反映所有事务的等待情况 ·事务等待图是一个有向图G=(T,U) ·并发控制子系统周期性地(比如每隔1min)检测事务等待图,如果发现图中存在回路,则表示系统中出现了死锁。 ? ·死锁的解除 ·选择一个处理死锁代价最小的事务,将其撤消,释放此事务持有的所有的锁,使其它事务能继续运行下去。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

? ·11.1 并发控制概述11.2 封锁(Locking) ·11.3 活锁和死锁 ·11.4 并发调度的可串行性 ·11.5 两段锁协议 ·11.6 封锁的粒度 ? ? ? ? 11.1 并发控制概述11.2 封锁(Locking) ? ·多事务执行方式 : ·(1)事务串行执行 ·(2)交叉并发方式 ·(3)同时并发方式 ? ·并发操作带来的数据不一致性: ·丢失修改(lost update) ·不可重复读(non-repeatable read) ·读“脏”数据(dirty read) ? ·并发控制的主要技术: ·封锁(Locking)?? (商用的DBMS一般都采用封锁方法) ·时间戳(Timestamp) ·乐观控制法 ? ·基本封锁类型: · 排它锁(Exclusive lock,简记为X锁) ·共享锁(Share lock,简记为S锁) ? ·封锁协议(Locking Protocol) ·常用的封锁协议:三级封锁协议。 ? ? ·一级封锁协议 ·事务T在修改数据R之前必须先对其加X锁,直到事务结束才释放。 ·一级封锁协议可防止丢失修改 ·在一级封锁协议中,如果是读数据,是不需要加锁的,所以它不能避免不可重复读和读“脏”数据。 ·二级封锁协议 ·一级封锁协议+事务T在读取数据R前必须先加S锁,读完后不等事务结束即可释放S锁。 ·二级封锁协议可以防止丢失修改和读“脏”数据。 ·在二级封锁协议中,由于读完数据后即可释放S锁,所以它不能避免不可重复读。 ·三级封锁协议 ·三级封锁协议 + 事务T在读取数据R之前必须先对其加S锁,直到事务结束才释放 ·三级封锁协议可避免丢失修改、读“脏”数据和不可重复读。 ? ? ? ? ? SQLServer的并发机制 · 事务隔离 ·对于 编程人员来说,不用手工去设置控制锁,通过设置事务的隔离级别自动管理锁。 ?
    推荐文章
      热点阅读