数据库原理第11章并发控制.pptx
文本预览下载声明
第十一章 并发控制;11.1 数据库的并发操作带来的问题;并发操作过程;举例:
银行转帐:事务Ti从帐户A过户100¥到帐户B 。
T: read(A);
A := A – 100;
write(A);
read(B);
B := B + 100;
write(B);
read(X):从数据库传送数据项X到事务的工作区中。
write(X):从事务的工作区中将数据项X写回数据库。;1、丢失更新问题;2、不可重复读问题;3、“脏数据”的读出;并发控制需要靠数据库的并发控制子系统来解决。如;11.2 封锁; 1、封锁类型; 排他型封锁(X封锁);共享型封锁(S封锁);封锁类型对比:; 2、封锁粒度;2、封锁粒度;3、封锁协议;举例:;SQL Server的锁定方式 ;SQL Server的各种物理锁粒度 ;; 可串行化调度;调度1:串行调度,T2跟在T1之后
执行后 A:¥855,
B:¥2145
调度2:串行调度,T1跟在T2之后
执行后 A:¥850,
B:¥2150 ;调度3:并发调度
等价于调度1,执行后 A:¥855, B:¥2145;调度4:并发调度
不等价于任何串行调度,
执行后 A:¥950, B:¥2100 ;11.4 两段封锁法;示例
Slock(A)…Slock(B)…Xlock(C)…unlock(A)… unlock(C)…unlock(B)遵从两段锁协议。
Slock(A)…unlock (A)…Slock(B)…Xlock(C)… unlock(C)…unlock(B)不遵从两段锁协议。
遵从两段锁协议仍可能发生死锁; 两段封锁法和可串行化调度的关系;举例:;封锁转换;11.5 活锁与死锁;11.5 活锁与死锁;11.5 活锁与死锁; 11.5 活锁与死锁;发生死锁的条件:① 互斥条件:事务请求对资源的独占控制。② 等待条件:事务已持有一定资源,又去申请并等待其它资源。③ 非抢占条件:直到资源被持有它的事务释放之前,不可能将该资源强制从持有它的事务夺去。④ 循环等待条件:存在事务相互等待的等待圈。 ;11.5 活锁与死锁;11.5 活锁与死锁;11.5 活锁与死锁;死锁解除:发现死锁时,系统采取行动从死锁中解除。
选择牺牲者
应使事务回滚带来的代价最小。
回滚
彻底回滚,或只回滚到可以解除死锁处。 ;举例:;练习;练习;时间;时间;时间;时间
显示全部