第八章并发控制 8.1并发控制概述 8.2封锁 8.3封锁协议 8.4活锁和死锁 8.5并发调度的可串行性 8.6两段锁协议 8.7封锁的粒度 8.8 Oracle的并发控制 89小结 An Introduction to Database System
An Introduction to Database System 第八章 并发控制 8.1 并发控制概述 8.2 封锁 8.3 封锁协议 8.4 活锁和死锁 8.5 并发调度的可串行性 8.6 两段锁协议 8.7 封锁的粒度 8.8 Oracle的并发控制 8.9 小结
83封锁协议 ■在运用乂锁和S锁对数据对象加锁时,需要约定 些规则:封锁协议( Locking Protocol) ■何时申请X锁或S锁 ■持锁时间、何时释放 不同的封锁协议,在不同的程度上为并发操 作的正确调度提供一定的保证 常用的封锁协议:三级封锁协议 An Introduction to Database System
An Introduction to Database System 8.3 封锁协议 ◼ 在运用X锁和S锁对数据对象加锁时,需要约定 一些规则:封锁协议(Locking Protocol) ◼ 何时申请X锁或S锁 ◼ 持锁时间、何时释放 ◼ 不同的封锁协议,在不同的程度上为并发操 作的正确调度提供一定的保证 ◼ 常用的封锁协议:三级封锁协议
1级封锁协议 ■事务T在修改数据R之前必须先对其加X锁, 直到事务结束才释放 正常结束( COMMIT) 非正常结束( ROLLBACK) 1级封锁协议可防止丢失修改 ■在1级封锁协议中,如果是读数据,不需要加 锁的,所以它不能保证可重复读和不读“脏” 数据。 An Introduction to Database System
An Introduction to Database System 1级封锁协议 ◼ 事务T在修改数据R之前必须先对其加X锁, 直到事务结束才释放 ◼ 正常结束(COMMIT) ◼ 非正常结束(ROLLBACK) ◼ 1级封锁协议可防止丢失修改 ◼ 在1级封锁协议中,如果是读数据,不需要加 锁的,所以它不能保证可重复读和不读“脏” 数据
1级封锁协议 T2 ① Xlock a 获得 ②读A=16 Xlock A ③A←A1 等待 没有丢失修改 写回A=15 等待 Commit 等待 Unlock a 等待 获得ⅪockA 读A=15 A←A-1 写回A=14 Commit Unlock a An Introduction to Database System
An Introduction to Database System 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 没有丢失修改
1级封锁协议 ① Xlock A 获得 ②读A=16 A←A-1 读“脏”数据 写回A=15 读A=15 ④ Rollback Unlock a Introduction to Database System
An Introduction to Database System 1级封锁协议 读A=15 ① Xlock A 获得 ② 读A=16 A←A-1 写回A=15 ③ ④ Rollback Unlock A T1 T2 读“脏”数据