《数据库系统概论》 -- 10. 事务& 数据库恢复技术

1. 事务概念

1.1概念

         事务是一系列的数据库操作,是数据库应用程序的基本逻辑单元。

         事务使用户定义的一个数据库操作序列,这些操作要么全做,要么全不做,是一个不可分割的工作单位

1.2定义事务语句

         BEGIN TRANSACTION; #开始事务

         COMMIT; #提交事务(将事务所有对数据库的更新写到磁盘上的物理数据库中)

         ROLLBACK; #回滚事务(将事务所有对数据库已完成的操作全部撤销,会滚到事务开始时的状态)

1.3事务特性ACID

         Atomicity原子性:事务的所有操作要不都做,要么都不做。

         Consistency一致性:事务执行的结果是数据库从一个一致性状态变到另一个一致性状态。

         Isolation隔离性:一个事务的执行不能被其他事务干扰。

         Durability持续性:事务一旦被提交,它对数据库数据的改变就应是永久性的。

1.4影响事务ACID特性的因素及相关处理技术

         事务运行被终止(数据库恢复技术)

         事务之间相互干扰(并发控制技术)

2.事务处理技术

数据库恢复技术和并发控制技术

3.数据库恢复技术

3.1概念

计算机系统的硬件故障、软件错误、误操作、恶意破坏,造成运行事务非正常中断,甚至破坏数据库,RDBMS使用恢复子系统把数据库从错误状态恢复到某一已知的正确状态(一致性状态)

3.2故障种类

3.2.1事务故障

影响

         影响单个事务,不影响其他事务。

类型

         程序可控回滚(ROLLBACK)-->UNDO(撤销)

         事务执行故障(如运算溢出、并发死锁等)-->UNDO(撤销)

3.2.2系统故障

概念

         某事件造成RDBS停止运转,需要重启RDBS。如操作系统故障、DBMS代码错误、系统断电等。

影响

         影响所有事务,但不损坏数据库。

类型

         已完成事务未写入磁盘-->REDO(重做)

         未完成事务写入磁盘-->UNDO(撤销)

3.2.3介质故障

影响

         数据库部分或全部损坏,数据丢失。如磁盘损坏。

3.2.4计算机病毒

影响

         影响计算机整体系统

3.3恢复技术

3.3.1原理

         建立冗余数据

3.3.2常用技术

         数据转储+登记日志文件。

         另:主从同步技术(即数据库镜像技术)

3.3.3数据转储

         静态转储

                   在系统中无运行事务时进行转储操作

                   优点:得到一个数据一致性副本。

                   缺点:必须等待用户事务结束后才可进行,降低数据库可用性。

         动态转储

                   在转储期间允许执行事务

                   优点:不影响用户事务执行

                   缺点:不能保证正确有效,转出过程中数据会随用户事务而改变,得到的不是一致性副本

         海量转储

                   每次转储为全量转储

         增量转储

                   每次只转储上一次转储后更新过的数据

3.3.4登记日志文件

         概念

                   记录事务对数据库的更新操作的文件

         原则

                   先写日志文件、后写数据库

                   登记的次序严格按照并发事务执行的时间次序

         分类

                   以记录为单位的日志文件

                            日志记录:事务开始(BEGIN TRANSACTION)标记、事务的所有数据库更新操作、事务结束(COMMIT/ROLLBACK)标记。这三个每一个都是一种日志记录。

                            每个日志记录的内容:事务标识(标明是那个事务)、操作类型(插入/删除/修改)、操作对象(记录内部标识)、更新前的旧值(insert此项为空值)、更新后的新值(delete此项为空值)

                   以数据块为单位的日志文件

                            日志文件的内容:事务标识、更新前的数据块、更新后的数据块。

3.3.5恢复策略

         事务故障

                   思想:恢复子系统利用日志文件UNDO该事务

                   步骤

                            反向扫描日志文件,查找该事务的更新操作

                            对该事务的更新操作执行逆操作

                            继续反向扫描日志文件,找到其他更新操作,并作逆处理

                            重复上述步骤,直至事务开始标记

         系统故障

                   思想:未完成事务写入数据库采用UNDO操作;已完成事务未写入数据库采用REDO操作。

                   步骤

                            找到故障发生前已经提交的事务(既有事务开始标记,也有事务结束标记中的COMMIT标记),将该事务放入重做队列(REDO-LIST)

                            找到故障发生时尚未完成的事务(只有事务开始标记,没有事务结束标记中的COMMIT标记),将该事务放入撤销队列(UNDO-LIST)

                            反向扫描日志文件,逆操作执行撤销事务

                            正向扫描日志文件,重做每个重做事务

         介质故障

                   思想:重装数据库,重做已完成的事务

                   步骤

                            重装数据库,装入最新的转储副本(转储开始时刻的副本),恢复到最新的具有一致性状态的数据(对于动态转储的副本,还需采用与恢复系统故障相同的方法,进行UNDO+REDO方法,恢复数据一致性)

                            装入相应的日志文件副本(转储结束时刻的副本),重做已完成的事务(只做REDO-LIST里的事务即可)

3.3.6带有检查点的恢复技术

思想

         在日志文件中增加一类新的记录:检查点记录,增加一个重新开始文件,使用恢复子系统来动态维护日志。

使用

         恢复技术用于系统故障

概念

         检查点记录内容

                   建立检查点时刻所有正在执行的事务清单

                   这些事务各自的最近一个日志记录的地址

         重新开始文件记录内容

                   记录各个检查点记录在日志文件中的地址

         动态维护日志文件

                   把当前日志缓冲区的所有日志记录写入磁盘的日志文件上

                   在日志文件中写入一个检查点记录

                   把当前数据缓冲区的所有数据记录写入磁盘的数据库中

                   把检查点记录在日志文件中的地址写入一个重新开始文件

通过检查点方法恢复的步骤

         从重新开始文件中找到最后一个检查点记录在日志文件中的地址,由该地址在日志文件中找到最后一个检查点记录

         由该检查点记录得到此刻正在执行的事务清单ACTIVE-LIST,建立UNDO-LIST和REDO-LIST,并将ACTIVE-LIST中的事务放入UNDO-LIST

         从检查点开始正向扫描日志文件,如果有新开始的事务(有BEGIN TRANSACTION标记),放入UNDO-LIST,如果有新提交的事务(有COMMIT标记),放入REDO-LIST,重复,直至日志文件结束

         对UNDO-LIST中的每个事务反向执行UNDO操作,对REDO-LIST中每个事务正向执行REDO操作

3.3.7数据库镜像技术(主从同步技术)

概念

         根据DBA的要求,自动把整个数据库或其中的关键数据复制到另一个磁盘上,每当主数据库更新时,DBMS自动把更新后的数据复制过去,由DBMS保证朱从数据库的一致性。

原文地址:https://www.cnblogs.com/yc913344706/p/7689042.html