文章目录 第十一章—事务管理1 事务的基本概念1.1事务定义语句1.2 事务的特性(ACID) 2 数据库的并发控制2.1事务调度2.2并发操作带来的问题2.3两段锁协议2.4活锁与死锁 3 数据库的故障与恢复3.1故障种类(四类)3.2恢复的实现技术
1 事务的基本概念 1.1事务定义语句 BEGIN TRANSACTION:事务开始END TRANSACTION:事务结束COMMIT:事务提交。事务成功地结束,它将通知事务管理器该事务的所有更新操作,现在可以被提交或永久地保留。ROLLBACK:事务回滚。事务非成功地结束,它将通知事务管理器出故障了,数据库可能处于不一致状态,该事务的所有更新操作必须回滚或撤消。 1.2 事务的特性(ACID) 原子性(Atomicity):不可分割性,事务的所有操作要么都做,要么都不做。一致性(Consistency):事务运行的结果保持数据的一致性,数据的平衡。一致性可以由DBMS的完整性约束机制来自动完成,复杂的事务则由应用程序来完成。隔离性(Isolation):多个事务的执行操作互不干扰,相互隔离。持久性(Durability):一个事务一旦提交,它对事务的改变必须是永久的。 2 数据库的并发控制 2.1事务调度 串行调度:多个事务串行执行,一个事务所有操作都执行完成在执行另一个事务,N个事务有N!种正确的串行调度。并发调度:利用分时的方法同时处理多个事务,调度方案远大于N!个。并发调度的结果与某个串行调度的结果相同,则此并发调度是正确的。可恢复调度:当事务Tj要读事务Ti写的数据时,事务Ti必须要先于事务Tj提交。 2.2并发操作带来的问题
不一致性有三类:丢失修改、不可重复读、读脏数据。
丢失修改:缺少了另一个事务对结果的修改。不可重复读:同一事务内对同一组数据的相同运算结果不同。读脏数据:事务T1对C做修改,事务T2读取C,随后事务T1回滚,事务T2读取的C无效,所读为丢掉的的垃圾值2.3两段锁协议
1.封锁协议:一级封锁协议、二级封锁协议、三级封锁协议。
一级封锁协议:事务T对A修改前对其加X锁,直至事务结束才释放。解决了丢失修改的问题。二级封锁协议:在一级封锁协议上,在事务T读取A前必须对其加上S锁,读完即可释放S锁。解决了读脏数据的问题。三级封锁协议:在一级封锁协议上,在事务T读取前必须对其加S锁,直至事务及诶苏才释放S锁。解决了不可重复读的问题。2.两端锁协议:任何数据进行读写之前必须对该数据加锁;在释放一个封锁之后,事务不再申请和获得任何其他封锁。两段的含义是指事务分为两个阶段,第一阶段是获得封锁(称为扩展阶段),第二阶段是释放封锁(称为收缩阶段)。
2.4活锁与死锁 活锁:事务T1封锁了数据R,事务T2等待,T1释放锁,系统先批准了事务T3,T3释放了,系统批准了事务T4。T2永远等待,解决方法,先到先服务。死锁:两个以上的事务分别请求封锁对方已经封锁的数据,互相等待。解决办法,选择一个处理死锁代价最小的事务,将其撤消,释放此事务持有的所有的锁,使其他事务得以继续允许下去。死锁的预防:一次封锁法或顺序封锁法
死锁的诊断:超时法或事务等待图法
恢复的基本原理:冗余
建立冗余数据的的技术:数据转储和登记日志文件
- 动态转储:转储期间允许对数据库进行存取或修改。
- 静态转储:转储期间不允许对数据进行存取或修改。
- 海量转储:每次转储全部数据库。
- 增量转储:每次只转储上一次转储后更新过的数据。登记日志文件:
-日志文件的主要格式:以记录为单位、以数据快为单位。
-日志文件的作用:1.事务故障恢复和系统故障恢复必须用日志文件;2.在动态转储中必须建立日志文件,后备副本和日志文件结合起来才能有效地恢复数据库;3.在静态转储中也可以建立日志文件。
-登记日志文件需遵循的两条原则:1.登记的次序严格按并发事务执行的事件次序;2.必须先写日志文件,后些数据库。
最后,我也是成功拿证了~~