文档介绍:第六章事务管理
影响事务ACID特性的因素:
强行中止事务
并发事务的交叉执行
恢复引论
故障对数据库的影响
数据库本身被破坏
数据库无破坏,数据不正确
恢复的基本原理:冗余
分类:
(1)后备复本
转储(Dump)-静态转储/动态转储;海量转储/增量转储
问题:最近一致状态
(2) 后备复本+运行记录(日志)
前像(Before Image BI)
后像(After Image AI)
事务状态
(3)多复本
运行记录的主要内容
前像文件
后像文件
活动事务列表(ATL)
已提交事务列表(CTL) 策略
提交规则:后像在事务提交前应写入非易失存储器中;
先记后写:如果事务在提交前将后像写入DB,则应先把前像写入运行记录。
后像在事务提交前全部写入数据库
① TID → ATL
② BI → LOG
③ AI → DB
④ TID → CTL
⑤从ATL删除TID
后像在事务提交后写入数据库
① TID → ATL
② AI → LOG
③ TID → CTL
④ AI → DB
⑤从ATL删除TID
后像在事务提交前后写入数据库
① TID → ATL
② AI,BI → LOG
③ AI → DB(部分)
④ TID → CTL
⑤ AI → DB(全部)
⑥从ATL删除TID
事务运行结束后发送的消息
事务运行中发送的消息
(1)事务故障(undo)
(2)系统故障(redo + undo)check point
(3)介质故障(redo)
(1)丢失更新
(2)不可重复读
(3)读“脏”数据
原因:写操作写-写,读-写
目标等价调度
目标可串行化调度
冲突操作
冲突等价调度
冲突可串行化调度
冲突等价调度一定是目标等价调度,反之不成立
目标可串行化:NP完全问题
冲突可串行化:前趋图
(1) X锁
读、写排他锁
效率
(2) S、X锁
S:共享读
X:排他写
(3) S、U、X锁
(2PL)
申请封锁阶段(增长阶段)
释放封锁阶段(缩减阶段)
合式事务:遵守先加锁,后操作原则的事务
定理:如果所有事务都是合式,两阶段事务,则他们的任何调度都是可串行化的。
严格的两阶段封锁协议
无限等待
事务间互相占用资源
解决死锁问题的方法:
允许死锁发生
预防、避免死锁发生
检测方法:
(1)超时法
(2)等待图法(有向图)
无限等待问题
OS中的方法不完全适用于DBMS
时间标记(timestamp)
(1)等待-死亡策略(wait-die)
if ts(T1)<ts(T2) then T1 waits
else {