实时数据库中并发控制理论
WWW_PLCJS※COM-PLC-技×术_网(可编程控※制器技术门户)
提纲
WWW※PLCJS_COM-PL#C-技.术_网(可编※程控※制器技术门户)
1. 与并发控制有关的概念 WWW_P※LCJS_COM-PLC-)技.术_网
2. 并发控制的理论 P.L.C.技.术.网——可编程控制器技术门户
3. 并发控制的实现 WWW※PLCJS_COM-PL#C-技.术_网(可编※程控※制器技术门户)
4. 锁的类别 WWW_PLC※JS_COM-PLC-技.术_网(可编程控※制器技术门户)
5. 并发控制的原则 WWW_PLCJS※COM-PLC-技.术_网(可※编程控※制器技术门户)
6. 实时数据库中并发控制的实现 plcjs.技.术_网
7. 参考书目WWW_P※LCJS_CO※M-PLC-技-.术_网
WWW_P※LCJS_CO※M-PLC-技-.术_网
1.与并发控制有关的概念 WWW_PLCJS@_COM%-PLC-技.术_网
1.1. 事务的ACID特性 WW.W_PLC※JS_C,OM-PL,C-技.术_网
1.2. 事务分类 WWW_P※LCJS_CO※M-PLC-技-.术_网
1.3. 平坦事务分类 WW.W_PLCJS_COM-PLC-技.术_网
1.4. 隔离性定义1WWcW_PLCJS_COM-PLC-技.术_网
1.5. 隔离性的依赖模型 WWW_PLCJS_COM-PLC-技.术_网
1.6. 三种有害的依赖关系 WWW_PL※CJS_COM-PLC-技.术_网
1.7. 隔离性原理 WWW_PLCJ-S_COM-PLC-技.术_网(可-编程控-制器技术-门户)
1.8. 隔离性定义2WWcW_PLCJS_COM-PLC-技.术_网
1.9. 隔离性的级别 WWW_PLCJS@_COM%-PLC-技.术_网
1.1. 事务的ACID特性
P_L_C_技_术_网——可——编——程——控-制-器-技——术——门——户
1.1.1. 一致性 WWW_P※LCJS_CO※M-PLC-技-.术_网
1.1.2. 原子性 WWW_PLCJS_COM-PLC-技.术_网
1.1.3. 执久性 WWW_PLC※JS_COM-PLC-技.术_网(可编程控※制器技术门户)
1.1.4. 隔离性 P.L.C.技.术.网——可编程控制器技术门户
1.1.1. 一致性
WWW_PLCJS※COM-PLC-技×术_网(可编程控※制器技术门户)
系统必须满足所有完整性约束 WWW_PLC※JS_COM-PmLC-技.术_网
内部状态一致性 WWW_P※LCJS_CO※M-PLC-技-.术_网
系统必须满足应用程序的完整性约束 WW.W_PLCJS_COM-PLC-技.术_网
系统异常时,能恢复到一致性的状态 WWW_PLC※JS_COM-PmLC-技.术_网
1.1.2. 原子性
WW.W_PLC※JS_C,OM-PL,C-技.术_网
系统必须确保事务一直运行到完成,如果没有运行完成,将不产生任影响,就像没有运行一样。 W1WW_P4LCJS_COM-PLC-技.术_网
原子性的执行表明事务要么成功提交,要么异常中址 WWW_P※LCJS_COM-PLC-)技.术_网
1.1.3. 执久性
WWW※PLCJS_COM-PL#C-技.术_网(可编※程控※制器技术门户)
系统必须确保,一旦事务成功提交,不管后来计算机和存贮介质是否发生故障,其执行结果必须反映在系统中 WW.W_PLC※JS_C,OM-PL,C-技.术_网
1.1.4. 隔离性
WW.W_PLC※JS_C,OM-PL,C-技.术_网
尽管事务是并发执行的,但并发调度执行的结果就像事务按照某种顺序串行执行时所产生的结果一样 W1WW_P4LCJS_COM-PLC-技.术_网
1.2. 事务分类
WWW_PLCJ-S_COM-PLC-技.术_网(可-编程控-制器技术-门户)
平坦事务 WWW_P※LCJS_COM-PLC-)技.术_网
链式事务 ——可——编——程——控-制-器-技——术——门——户
嵌套事务 WWcW_PLCJS_COM-PLC-技.术_网
分布式事务 WWW_P※LCJS_CO※M-PLC-技-.术_网
1.3. 平坦事务分类
WWW.PLCJS.COM——可编程控制器技术门户
只读事务 WWW_PLCJS@_COM%-PLC-技.术_网
只写事务 WWcW_PLCJS_COM-PLC-技.术_网
更新事务 WW.W_PLCJS_COM-PLC-技.术_网
1.4. 隔离性定义1
WWW※PLCJS_COM-PL#C-技.术_网(可编※程控※制器技术门户)
事务处理系统可以并发地运行事务,但它的结果如同顺序执行一样,就应用程序而言,事务好像是在没有并行的情况下运行,事务的确切执行顺序是由系统控制的,系统行为等价于事务的某种串行执行,其造成的表面现象是一个事务执行完毕后,下一个事务才开始运行 P_L_C_技_术_网——可——编——程——控-制-器-技——术——门——户
1.5. 隔离性的依赖模型
P_L_C_技_术_网——可——编——程——控-制-器-技——术——门——户
事务的某次操作A的执行必须在另一个事务的某次操作B的操作结果,则称A依赖B P.L.C.技.术.网——可编程控制器技术门户
读-读 没有依赖关系 plcjs.技.术_网
读-写 有依赖关系 WWW_P※LCJS_CO※M-PLC-技-.术_网
写-写 有依赖关系 WWW_PLCJ-S_COM-PLC-技.术_网(可-编程控-制器技术-门户)
写-读 有依赖关系 WWW※PLCJS_COM-PL#C-技.术_网(可编※程控※制器技术门户)
1.6. 三种有害的依赖关系
WWW_PL※CJS_COM-PLC-技.术_网
丢失更新:事务T1的写被事务T2所忽略WWW_PLC※JS_COM-PLC-技.术_网(可编程控※制器技术门户)
T2读; T1写;T2写;WWW_PLC※JS_COM-PLC-技.术_网(可编程控※制器技术门户)
读脏数据:T1在读的是T2写的的中间数据WWW_PLCJS※COM-PLC-技×术_网(可编程控※制器技术门户)
T2写;T1读;T2写;P_L_C_技_术_网——可——编——程——控-制-器-技——术——门——户
不可重复读:事务T1读某对象两次,两次的结果不一致plcjs.技.术_网
T1读;T2写;T1读;WWW_PLCJS※COM-PLC-技.术_网(可※编程控※制器技术门户)
1.7. 隔离性原理
WWW_PL※CJS_COM-PLC-技.术_网
三种有害的依赖关系覆盖了事务处理的所有情况,如果可以防止它们发生,那么将不会有并发异常,事务将表现为隔离运行的状态 WWW_PLCJ-S_COM-PLC-技.术_网(可-编程控-制器技术-门户)
1.8. 隔离性定义2
WWW_PLCJS@_COM%-PLC-技.术_网
如果满足下列条件,事务T与其它事务是隔离的:WW.W_PLCJS_COM-PLC-技.术_网
0. T不会重写其它务的脏数据。 WWW_PLCJS※COM-PLC-技.术_网(可※编程控※制器技术门户)
1. T所写的数据,在提交前,不会被其它事务读或写;WWW_PLCJS※COM-PLC-技×术_网(可编程控※制器技术门户)
2. T不读其它务的脏数据;WWW_PLC※JS_COM-PmLC-技.术_网
3. T在提交之前,其它事务不会写T所要读的数据;WWW_PLCJS※COM-PLC-技.术_网(可※编程控※制器技术门户)
其中: WWW_PLCJS※COM-PLC-技×术_网(可编程控※制器技术门户)
条件0和1排除了丢失更新;WW.W_PLCJS_COM-PLC-技.术_网
条件2防止了读脏数据;WWcW_PLCJS_COM-PLC-技.术_网
条件3防止了不可重复读;WWW※PLCJS_COM-PL#C-技.术_网(可编※程控※制器技术门户)
1.9.隔离性的级别
plcjs.技.术_网
0级: 0级事务不会重写高一级事务的脏数据 WWW※PLCJS_COM-PL#C-技.术_网(可编※程控※制器技术门户)
1级: 1级事务不会有丢失更新WWW_P※LCJS_COM-PLC-)技.术_网
2级: 2级事务既不会有丢失更新,也不会读脏数据;plcjs.技.术_网
3级: 3级事务不会有丢失更新,不会读脏数据,可重复读WWW_PLCJS@_COM%-PLC-技.术_网
SQL标准定义了这四种级别,每个关系数据库都实现了这四种级别 W1WW_P4LCJS_COM-PLC-技.术_网
2.并发控制理论
P_L_C_技_术_网——可——编——程——控-制-器-技——术——门——户
2.1. 并发控制的原则 WWW_PLCJ-S_COM-PLC-技.术_网(可-编程控-制器技术-门户)
2.2. 并发控制的性能指标 P_L_C_技_术_网——可——编——程——控-制-器-技——术——门——户
2.3. 并行调度的等价性 WWW_PLCJS_COM-PLC-技.术_网
2.4. 调度的可串行性 WWW※PLCJS_COM-PL#C-技.术_网(可编※程控※制器技术门户)
2.5. 调度可串行化的判断 WWW_PLC※JS_COM-PmLC-技.术_网
2.6. 隔离性定理 WWW※PLCJS_COM-PL#C-技.术_网(可编※程控※制器技术门户)
2.1. 并发控制的原则
P_L_C_技_术_网——可——编——程——控-制-器-技——术——门——户
事务的并发执行不应导致程序的失效; WWW_PLCJS※COM-PLC-技×术_网(可编程控※制器技术门户)
相比于串行执行,并发执行不应该有更低的平均吞吐量和更长的平均响应时间 WW.W_PLC※JS_C,OM-PL,C-技.术_网
2.2. 并发控制的性能指标
WW.W_PLCJS_COM-PLC-技.术_网
平均吞吐量 WWW_PLCJ-S_COM-PLC-技.术_网(可-编程控-制器技术-门户)
加权平均吞吐量 plcjs.技.术_网
平均响应时间 WWW_P※LCJS_COM-PLC-)技.术_网
加权平均响应时间 WWcW_PLCJS_COM-PLC-技.术_网
错失率 WWW_PLC※JS_COM-PmLC-技.术_网
2.3. 并行调度的等价性
WWW_PLCJS@_COM%-PLC-技.术_网
冲突等价 WWW_PLCJS※COM-PLC-技.术_网(可※编程控※制器技术门户)
两个调度具有相同的事务集,相应的事务具有相同的操作; WWW.PLCJS.COM——可编程控制器技术门户
两个调度中,任何两个相冲突的提交事务的操作的先后顺序一致; WWW_P※LCJS_COM-PLC-)技.术_网
视图等价 WWW_PLC※JS_COM-PmLC-技.术_网
两个调度读出的数据是一样的; WWW_PLCJS@_COM%-PLC-技.术_网
两个调度留给系统的操作结果是一样的; P.L.C.技.术.网——可编程控制器技术门户
冲突等价实现容易,视图等价实现困难,现在的并发控制理论大多依据冲突等价 WWW_PLCJS※COM-PLC-技.术_网(可※编程控※制器技术门户)
2.4. 调度的可串行化
WWcW_PLCJS_COM-PLC-技.术_网
如果一个调度等价于一个串行调度,则称该事务为可串行化的,该调度为可串行化调度; W1WW_P4LCJS_COM-PLC-技.术_网
可串行化调度分为冲突可串行化和视图可串行化 ——可——编——程——控-制-器-技——术——门——户
冲突可串行化实现容易,视图可串行化实现困难,现在的并发控制理论大多依据冲突可串行化 W1WW_P4LCJS_COM-PLC-技.术_网
2.5. 可串行化调度的判断
WWW_P※LCJS_COM-PLC-)技.术_网
如果某调度中,任意事务的的输出集与其余事务的输入集及输出集无交集,则该调度是可串行化的 WWW_PLCJS_COM-PLC-技.术_网
构建事务调度的串行图,如果没有检测到环,则该调度是可串行化的; WWW_PLCJS@_COM%-PLC-技.术_网
可串行化判断有静态和动态两种 WWW.PLCJS.COM——可编程控制器技术门户
2.6. 隔离性定理
WWW_PLC※JS_COM-PmLC-技.术_网
如果事务的读、写、解锁都有相应的锁覆盖,且所有的锁都会在事务结束前释放,则该事务是规范的; WWW_PLC※JS_COM-PmLC-技.术_网
如果某事务中所有的加锁操作都在解锁操作之前,则该事务是两阶事务; WWW_PLC※JS_COM-PmLC-技.术_网
如果同一时间内没发生两个不同事务的锁冲突,则该调度是合法的; WWcW_PLCJS_COM-PLC-技.术_网
如果一个调度中,所有的事务都是规范的且是两阶段的,则任何合法的调度是隔离的 WWW※PLCJS_COM-PL#C-技.术_网(可编※程控※制器技术门户)
3.并发控制的实现
P.L.C.技.术.网——可编程控制器技术门户
3.1. 基于锁的并发控制 ——可——编——程——控-制-器-技——术——门——户
3.2. 二段封锁协议的分类 WWW_PLCJS_COM-PLC-技.术_网
3.3. 二段封锁协议的优缺点 P.L.C.技.术.网——可编程控制器技术门户
3.4. 改进型二段封锁协议 WWW_PLCJS※COM-PLC-技×术_网(可编程控※制器技术门户)
3.5. 乐观并发控制 WW.W_PLCJS_COM-PLC-技.术_网
3.6. 乐观并发控制的优缺点 WWW_PLC※JS_COM-PmLC-技.术_网
3.7. 改进型乐观并发控制 WWW_PL※CJS_COM-PLC-技.术_网
3.8. 其它并发控制算法 WW.W_PLCJS_COM-PLC-技.术_网
3.1. 基于锁的并发控制
WWW_PLCJ-S_COM-PLC-技.术_网(可-编程控-制器技术-门户)
锁类型:共享锁、排它锁 P.L.C.技.术.网——可编程控制器技术门户
锁相容:读读相容,其它不相容 WWW※PLCJS_COM-PL#C-技.术_网(可编※程控※制器技术门户)
一个事务中,所有的加锁动作都在所有的解锁动作之前,称该事处是二段事务,相应的加锁封锁协议称为二段封锁协议(2PL),2PL是调度可串行化的充分条件;WWW_PLCJS@_COM%-PLC-技.术_网
悲观协议 WWW.PLCJS.COM——可编程控制器技术门户
3.2. 二段封锁协议的分类
WW.W_PLCJS_COM-PLC-技.术_网
一般2PLWWW_PLC※JS_COM-PLC-技.术_网(可编程控※制器技术门户)
保守2PLWWW.PLCJS.COM——可编程控制器技术门户
• 事务在访问对象之前,加锁全部完毕 WW.W_PLC※JS_C,OM-PL,C-技.术_网
• 避免死锁,降低并发性 WWW_PLCJS@_COM%-PLC-技.术_网
严格2PLW1WW_P4LCJS_COM-PLC-技.术_网
• 所有排它锁必须在事务结束时才释放 ——可——编——程——控-制-器-技——术——门——户
• 避免读脏数据 WWW_PL※CJS_COM-PLC-技.术_网
强2PLWWW_PLCJS※COM-PLC-技.术_网(可※编程控※制器技术门户)
• 所有锁必须在事务结束时才释放 WWW_PLCJS※COM-PLC-技.术_网(可※编程控※制器技术门户)
• 避免不可重复读 WWcW_PLCJS_COM-PLC-技.术_网
3.3. 二段封锁协议的优缺点
WWW_P※LCJS_COM-PLC-)技.术_网
二段封锁协议是悲观协议,存在事务阻塞,降低了事处的并发度 WWW※PLCJS_COM-PL#C-技.术_网(可编※程控※制器技术门户)
如果对数据访问的竞争大,则二段封锁协议具有较高的性能,否则,会存在不必要的加锁和解锁操作 WWW_PL※CJS_COM-PLC-技.术_网
主要用在资源紧张的情况下 WWW_PLCJS_COM-PLC-技.术_网
3.4. 改进型二段封锁协议
WWW_PLC※JS_COM-PmLC-技.术_网
高优先级优先2PLWWW_P※LCJS_CO※M-PLC-技-.术_网
优先级继承2PL——可——编——程——控-制-器-技——术——门——户
条件优先级继承2PLWWW_PLC※JS_COM-PLC-技.术_网(可编程控※制器技术门户)
……——可——编——程——控-制-器-技——术——门——户
3.5. 乐观并发控制
WWW_PL※CJS_COM-PLC-技.术_网
乐观并发控制事先不进行冲突检查; WW.W_PLCJS_COM-PLC-技.术_网
乐观并发控制将事务分为读、校验、提交三个阶段; WWW_P※LCJS_COM-PLC-)技.术_网
读操作从对象中取得副本并进行处理;校验阶段判断是否冲突;如果没有冲突,则提交更新,否则重启该事务; WW.W_PLC※JS_C,OM-PL,C-技.术_网
同一时刻只一个事处处在验证阶段和写阶段 WWW_PLCJS_COM-PLC-技.术_网
3.6. 乐观并发控制的优缺点
WWW_PL※CJS_COM-PLC-技.术_网
乐观并发处理中没有锁; WWW_PLC※JS_COM-PLC-技.术_网(可编程控※制器技术门户)
每个事务都有自己的私有缓存,空间浪费大; WWW_PLCJS_COM-PLC-技.术_网
如果冲突产生,事务重启的成本太高; WWW_PLC※JS_COM-PLC-技.术_网(可编程控※制器技术门户)
如果对象竞争小,乐观并发控制效率高,如果对象竞争频繁,则效率低,特别是有“热点”时 WWW_PLCJS※COM-PLC-技.术_网(可※编程控※制器技术门户)
3.7. 改进型乐观并发控制
WWW.PLCJS.COM——可编程控制器技术门户
前验证乐观并发控制; W1WW_P4LCJS_COM-PLC-技.术_网
高优先级乐观并发控制; WWW_PLC※JS_COM-PLC-技.术_网(可编程控※制器技术门户)
半重启乐观并发控制; WWW_PLCJ-S_COM-PLC-技.术_网(可-编程控-制器技术-门户)
……WWW※PLCJS_COM-PL#C-技.术_网(可编※程控※制器技术门户)
3.8. 其它并行控制算法
WW.W_PLC※JS_C,OM-PL,C-技.术_网
字段调用* WWW.PLCJS.COM——可编程控制器技术门户
契约封锁* WWW_P※LCJS_CO※M-PLC-技-.术_网
多版本并发控制 WWW_P※LCJS_CO※M-PLC-技-.术_网
推测并发控制 WWcW_PLCJS_COM-PLC-技.术_网
基于动态调整串行化顺序的并发控制 WWW_PLCJS@_COM%-PLC-技.术_网