文档详情

第5章 数据库安全演示课件.ppt

发布:2019-02-17约2.85万字共336页下载文档
文本预览下载声明
封锁协议(续) 一、保证数据一致性的封锁协议 二、保证并行调度可串行性的封锁协议——两段锁协议 精选编制 一、保证数据一致性的封锁协议——三级封锁协议 三级封锁协议 1级封锁协议 2级封锁协议 3级封锁协议 精选编制 1级封锁协议 1级封锁协议 事务T在修改数据R之前必须先对其加X锁,直到事务结束才释放。 正常结束(COMMIT) 非正常结束(ROLLBACK) 1级封锁协议可防止丢失修改,并保证事务T是可恢复的。 在1级封锁协议中,如果仅仅是读数据不对其进行修改,是不需要加锁的,所以它不能保证可重复读和不读“脏”数据。 精选编制 图 用封锁机制解决三种数据不一致性示例 T1 T2 ①? Xlock A 获得 ②? 读A=16 ? ③A←A-1 写回A=15 Commit Unlock A ④ ? ? ⑤ ? ?? ? ? Xlock A 等待 等待 等待 等待 获得Xlock A 读A=15 A←A-1 写回A=14 Commit Unlock A? (a) 没有丢失修改 精选编制 图 用封锁机制解决三种数据不一致性示例 ?? ? ? 读A=15 ①? Xlock A 获得 ②? 读A=16 ? A←A-1 写回A=15 ③ ? ④ Rollback Unlock A ? T2 T1 (a.1) 读“脏”数据 精选编制 图 用封锁机制解决三种数据不一致性示例 ??? Xlock B 获得 ?读B=100 B←B*2 写回B=200 Commit Unlock B ①读A=50 读B=100 求和=150 ② ③读A=50 读B=200 求和=250 (验算不对) T2 T1 (a.2) 不可重复读 精选编制 2级封锁协议 2级封锁协议 1级封锁协议加上事务T在读取数据R之前必须先对其加S锁,读完后即可释放S锁。 2级封锁协议可以防止丢失修改和读“脏”数据。 在2级封锁协议中,由于读完数据后即可释放S锁,所以它不能保证可重复读。 精选编制 图 用封锁机制解决三种数据不一致性示例 T1 T2 ① Xlock C 读C= 100 C←C*2 写回C=200 ② ? ③ ROLLBACK (C恢复为100) Unlock C ④ ? ⑤ ? ? ? ? ? ? ? Slock C 等待 等待 等待 等待 获得Slock C 读C=100 Commit C Unlock C (c) 不读“脏”数据 精选编制 图 用封锁机制解决三种数据不一致性示例 (c.1) 不可重复读 ①?Sclock A 获得 读A=50 Unlock A ② Sclock B 获得 读B=100 Unlock B ③ 求和=150 Xlock B 等待 等待 获得Xlock B 读B=100 B←B*2 写回B=200 Commit Unlock B T2 T1 ④Sclock A 获得 读A=50 Unlock A Sclock B 获得 读B=200 Unlock B 求和=250 (验算不对) ? ? T2 T1 (续) 精选编制 3级封锁协议 3级封锁协议 1级封锁协议加上事务T在读取数据R之前必须先对其加S锁,直到事务结束才释放。 3级封锁协议可防止丢失修改、读脏数据和不可重复读。 精选编制 图 用封锁机制解决三种数据不一致性示例 T1 T2 ①??Slock A 读A=50 Slock B 读B=100 求和=150 ② ? ? ③ 读A=50 读B=100 求和=150 Commit Unlock A Unlock B ④ ? ? ⑤ ? ? ? ? ? Xlock B 等待 等待 等待 等待 等待 等待 等待 等待 获得Xlock B 读B=100 B←B*2 写回B=200 Commit Unlock B (b) 可重复读 精选编制 三级封锁协议 三级协议的主要区别 什么操作需要申请封锁以及何时释放锁(即持锁时间) 精选编制 三级封锁协议(续) 精选编制 二、两段锁协议 可串行性是并行调度正确性的唯一准则,两段锁(2
显示全部
相似文档