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)同时并发方式
?
·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的并发机制
·
事务隔离
·对于
编程人员来说,不用手工去设置控制锁,通过设置事务的隔离级别自动管理锁。
?
|