一、事务的概念及四个特性。恢复技术能保证事务的哪些特性?
事务是用户定义的一个数据库操作序列,这些操作要么全做要么全不做,是一个不可分割的工作单位。事务是恢复和并发控制的基本单位
事务的四个特性:
⚫ 原子性(Atomicity):事务中包括的诸操作要么都做,要么都不做
⚫ 一致性(Consistency) :事务执行结果必须是使数据库从一个一致性状态变到另一个一致性状态。
⚫ 隔离性(Isolation) :一个事务的执行不能被其他事务干扰
⚫ 持续性(Durability ):一个事务一旦提交,它对数据库中数据的改变就应该是永久性的
恢复技术能保证事务的一致性、原子性与持续性。
二、多事务执行方式
事务串行执行(serial)
每个时刻只有一个事务运行,其他事务必须等到这个事务结束以后方能运行不能充分利用系统资源,发挥数据库共享资源的特点
交叉并发方式(interleaved concurrency)
事务的并行执行是这些并行事务的并行操作轮流交叉运行
是单处理机系统中的并发方式,能够减少处理机的空闲时间,提高系统效率
同时并发方式(simultaneous concurrency)
多处理机系统中,每个处理机可以运行一个事务,实现多个事务真正的并行运行
三、为什么事务非正常结束时会影响数据库数据的正确性?
事务执行结果必须是使数据库从一个一致性状态变到另一个一致性状态。如果数据库系统运行中发生故障,有些事务尚未完成就被迫中断,这时数据库就处于一种不正确的状态,或者说是不一致的状态。
四、数据库中为什么要有恢复子系统?它的功能是什么?
因为计算机系统中硬件的故障、软件的错误、操作员的失误以及恶意的破坏是不可避免的,这些故障轻则造成运行事务非正常中断,影响数据库中数据的正确性,重则破坏数据库,使数据库中全部或部分数据丢失,因此必须要有恢复子系统。
恢复子系统的功能是:把数据库从错误状态恢复到某一已知的正确状态,亦称为一致状态或完整状态。
五、数据库运行中可能产生的故障有哪几类?哪些影响事务的正常执行?哪些破坏数据库数据?
- 事务故障;(输入数据有误、运算溢出、违反完整性、并行事务死锁)
- 系统故障;(原因:操作系统错误、硬件错误、停电;后果:内存中数据库缓冲区的信息全部丢失,但存储在外部存储设备上的数据未受影响)
- 介质故障;(原因:硬件故障、操作系统错误、磁场干扰;后果:硬件故障使存储在外存中的数据部分丢失或全部丢失)
- 计算机病毒。
(1)(2)(3)影响事务的正常执行;(3)(4)破坏数据库数据
六、针对不同的故障,试给出恢复的策略和方法。
恢复技术的原理 :利用存储在后备副本、日志文件、数据库镜像中的冗余数据来修复或重建数据库中被破坏的或不正确的数据。
①数据转储
②登记日志文件
③恢复策略:
(1)事务故障的恢复
事务故障:事务在运行被中止
恢复方法 :由恢复子系统应用日志文件撤消(UNDO)此事务已对数据库进行的修改
1. 反向扫描文件日志,查找该事务的更新操作
2. 对该事务的更新操作执行逆操作。
3. 如此处理下去,直至读到此事务的开始标记,事务故障恢复就完成了
(2)系统故障的恢复 (系统重启时自动完成)
一些未完成事务对数据库的更新已写入数据库
一些已提交事务对数据库的更新还留在缓冲区没来得及写入数据库
恢复方法 :(与检查点的恢复步骤很像)
1.正向扫描日志文件,已提交的加入重做队列;未完成的加入撤销队列。
2.撤消故障发生时未完成的事务
3.重做已完成的事务
(3)介质故障的恢复(DBA重装,DBMS操作)
发生介质故障后,磁盘上的物理数据和日志文件被破坏
1. 重装数据库,装入最新的后备数据库副本,使数据库恢复到一致性状态(静态转储:副本;动态转储:副本+日志文件)
2. 重做已完成的事务
为预防介质故障,DBA必须周期性地转储数据库
七、数据库恢复的基本技术有哪些?恢复原理?
数据库转储的意义是什么?试比较各种数据转储方法。
日志文件?为什么要设立日志文件?
登记日志文件时为什么必须先写日志文件,后写数据库?
数据转储和登录日志文件是数据库恢复的基本技术。
当系统运行过程中发生故障,利用转储的数据库后备副本和日志文件就可以将数据库恢复到故障前的某个一致性状态。
数据转储:DBA定期地将数据库复制到磁带或另一个磁盘上保存起来的过程。当数据库遭到破坏后可以将后备副本重新装入,将数据库恢复到转储时的状态。
静态转储:系统五运行事务时的转储操作,事务和转储不能同时进行。
动态转储:指转储期间允许对数据库进行存取和修改。转储期间运行的事务可能修改了某些数据,必须把转储期间各事务对数据库的修改活动登记下来,建立日志文件。后援副本 + 日志文件就能得到数据库某个一致性状态。
海量转储:每次转储全部数据库。更方便
增量转储:每次只转储上一次转储后更新过的数据。更实用
日志文件是用来记录事务对数据库的更新操作的文件。
格式:以记录、数据块为单位。
内容:事务开始和结束标记、更新操作、新旧值。
用途:进行事务故障恢复;进行系统故障恢复;协助后备副本进行介质故障恢复。
写数据库和写日志文件是两个不同的操作
若先写了数据库修改,而在日志文件中没有登记下这个修改,则以后就无法恢复这个修改了 。
若先写日志,但没有修改数据库,按日志文件恢复时只不过是多执行一次不必要的UNDO操作,并不会影响数据库的正确性
八、什么是检查点记录?包括哪些内容?为什么?优点?
检查点记录是一类新的日志记录。
建立检查点:恢复子系统可以定期或不定期地建立检查点,保存数据库状态
1. 定期 : 按照预定的一个时间间隔,如每隔一小时建立一个检查点
2. 不定期: 按照某种规则,如日志文件已写满一半建立一个检查点
检查点记录的内容
1. 建立检查点时刻所有正在执行的事务清单
2. 这些事务最近一个日志记录的地址
重新开始文件的内容
1. 记录各个检查点记录在日志文件中的地址
原因(转化为优点):
1. 搜索整个日志将耗费大量的时间
2. 重做处理:重新执行,浪费了大量时间
九、试述使用检查点方法进行恢复的步骤。
从重新开始文件中找到最后一个检查点记录在日志文件中的地址,由该地址在日志文件中找到最后一个检查点记录
由该检查点记录得到检查点建立时刻所有正在执行的事务清单ACTIVE-LIST
a) 建立两个事务队列
- UNDO-LIST(撤销)
- REDO-LIST(重做)
b) 把ACTIVE-LIST暂时放入UNDO-LIST队列,REDO队列暂为空。
从检查点开始正向扫描日志文件,直到日志文件结束
c) 如有新开始的事务T i ,暂时放入UNDO-LIST队列
d) 如有提交的事务T j ,把T j 移到REDO-LIST队列;
对UNDO-LIST中的每个事务执行UNDO操作
对REDO-LIST中的每个事务执行REDO操作
十、动态维护日志文件的方法
周期性地执行如下操作 : 建立检查点,保存数据库状态。
具体步骤是:
(1) 将当前日志缓冲区中的所有日志记录写入磁盘的日志文件上
(2) 在日志文件中写入一个"检查点记录"
(3) 将当前数据缓冲区的所有数据记录写入磁盘的数据库中
(4) 把"检查点记录"在日志文件中的地址写入一个重新开始文件
十一、数据库复制
复制是数据库更具容错性的方法,主要用于分布式结构的数据库中
⚫ 在多个场地保留多个数据库备份,可以是整个或部分数据库的副本
⚫ 各个场地的用户可并发存取不同的数据库副本
⚫ 但DBMS必须采取手段保证用户对数据库的修改能及时反映到所有副本上
⚫ 当数据库出现故障,系统可以用副本对其进行联机恢复
⚫ 在恢复过程中,用户可以继续访问该数据库的副本,而不必中断其应用
(1) 数据库复制必须对用户透明
(2) 主数据库和各个从复制数据库在任何时候都必须保持事务的完整性
(3) 对于对异步的可在任何地方更新的复制方式,当两个应用在两个场地同时更新同一个记录,一个场地的更新事务尚未复制 到另一个场地时,第二个场地已开始更新,这时可能引起冲突
复制三种方式: ( 不同的复制方式提供了不同程度的数据一致性)
对等复制 (最理想)
⚫ 各个场地的数据库地位平等,可以互相复制数据
⚫ 用户可以在任何场地读取和更新公共数据集
⚫ 在某一场地更新公共数据集时,DBMS会立即将数据传送到所有其它副本
主/从复制
⚫ 数据只能从主数据库中复制到从数据库中
⚫ 更新数据只能在主场地上进行,从场地供用户读数据
⚫ 当主场地出现故障时,更新数据的应用可以转到其中一个复制场地上去
⚫ 实现简单,易于维护数据一致性
级联复制
⚫ 从主场的复制过来的数据,又从该场地再次复制到其它场地
⚫ 可以平衡当前各种数据需求对网络交通的压力
⚫ 通常与前两种配置联合使用
十二、什么是数据库镜像?它由什么用途?
数据库镜像:
自动把整个数据库或其中的部分关键数据复制到另一个磁盘上。
每当主数据库更新时,DBMS自动把更新后的数据复制过去,保证镜像数据与主数据的一致性。
用途:
一、数据库恢复。
当出现介质故障时,
①可由镜像磁盘继续提供使用;
②DBMS自动利用镜像磁盘数据进行数据库的恢复,
③不需要关闭系统和重装数据库副本。
二、提高数据库的可用性。
在没有出现故障时,当一个用户对某个数据加排它锁进行修改时,其他用户可以读镜像数据库上的数据,而不必等待该用户释放锁。
补充:
数据库的恢复:把数据库从错误状态恢复到某一已知的正确状态(亦称为一致状态)的功能
事务是一系列的数据库操作,是数据库应用程序的基本逻辑单元。
事务处理技术主要包括 数据库恢复 技术和 并发控制 技术。
在SQL语言中,定义事务控制的语句主要有________ 、________ 和 ________ 。
正确答案: BEGIN TRANSACTION COMMIT ROLLBACK
建立冗余数据最常用的技术是 数据转储 和登录日志文件 。通常在一个数据库系统中,这两种方法是一起使用的。
日志文件 是用来记录事务对数据库的更新操作的文件。主要有两种格式:以记录为单位的日志文件和以 数据块为单位的日志文件。