第十一章—事务管理
自己关于备考软考中级(数据库系统工程师)的一些知识点的补充
文章目录
- 第十一章—事务管理
- 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永远等待,解决方法,先到先服务。
- 死锁:两个以上的事务分别请求封锁对方已经封锁的数据,互相等待。解决办法,选择一个处理死锁代价最小的事务,将其撤消,释放此事务持有的所有的锁,使其他事务得以继续允许下去。
死锁的预防:一次封锁法或顺序封锁法
死锁的诊断:超时法或事务等待图法
3 数据库的故障与恢复
3.1故障种类(四类)
- 1.事务故障:由于程序执行错误而引起。逻辑错误,非法输入、找不到数据、溢出、超出资源限制等原因引起的事务执行失败;系统错误,系统进入一种不良状态(如死锁),导致事务无法继续执行。事务故障意味着没有达到预期的终点(COMMIT或者ROLLBACK),数据库处于不正确状态。恢复操作为事务撤消(UNDO)
- 2.系统故障:、硬件故障(CPU故障)、软件(DBMS、OS或应用程序)漏洞的影响下,影响了正在运行的所有事务,但不破坏数据库。恢复操作为对撤消队列中的各个事务进行撤消处理(UNDO),对重做队列中的各个事务进行重做处理(REDO)。
- 3.介质故障:数据库的存储介质发生故障,如磁盘损坏、瞬间强磁场干扰。恢复操作为重装数据库,然后重做已完成的事务。
- 4.计算机病毒:一种人为的故障或破坏,是一些恶作剧者研制的一种计算机程序。
3.2恢复的实现技术
恢复的基本原理:冗余
建立冗余数据的的技术:数据转储和登记日志文件
- 数据转储:数据库恢复中采用的基本技术。两种状态:动态转储、静态转储。两种方式:海量转储、增量转储。
- 动态转储:转储期间允许对数据库进行存取或修改。
- 静态转储:转储期间不允许对数据进行存取或修改。
- 海量转储:每次转储全部数据库。
- 增量转储:每次只转储上一次转储后更新过的数据。 - 登记日志文件:
-日志文件的主要格式:以记录为单位、以数据快为单位。
-日志文件的作用:1.事务故障恢复和系统故障恢复必须用日志文件;2.在动态转储中必须建立日志文件,后备副本和日志文件结合起来才能有效地恢复数据库;3.在静态转储中也可以建立日志文件。
-登记日志文件需遵循的两条原则:1.登记的次序严格按并发事务执行的事件次序;2.必须先写日志文件,后些数据库。
最后,我也是成功拿证了~~