10.1 事务的基本概念
1.事务
n在关系数据库中,一个事务可以是一条SQL语句,一组SQL语句或整个程序
n一个程序通常包含多个事务
(1)定义事务
v显式定义方式
BEGIN TRANSACTION BEGIN TRANSACTION
SQL 语句1 SQL 语句1
SQL 语句2 SQL 语句2
。。。。。 。。。。。
COMMIT ROLLBACK
①commit:事务正常结束,提交事务的所有操作(读+更新),事务中所有对数据库的更新写回到磁盘上的物理数据库中
②rollback:事务异常终止,事务运行的过程中发生了故障,不能继续执行,系统将事务中对数据库的所有已完成的操作全部撤销,事务滚回到开始时的状态
v隐式方式
当用户没有显式地定义事务时,数据库管理系统按缺省规定自动划分事务
2.事务的ACID特性
名词解析:
①一致性状态:数据库中只包含成功事务提交的结果
②不一致状态:数据库系统运行中发生故障,有些事务尚未完成就被迫中断;这些未完成事务对数据库所做的修改有一部分已写入物理数据库,这时数据库就处于一种不正确的状态
10.2 数据库恢复概述
v数据库的恢复
v恢复子系统是数据库管理系统的一个重要组成部分
v恢复技术是衡量系统优劣的重要指标
10.3 故障的种类和恢复策略
1.事务内部的故障
※.事务故障的恢复:事务撤消(UNDO)
①运算溢出
②并发事务发生死锁而被选中撤销该事务
③违反了某些完整性限制而被终止等
2.系统故障:称为软故障,是指造成系统停止运转的任何事件,使得系统要重新启动。
①发生系统故障时,一些尚未完成的事务的结果可能已送入物理数据库,造成数据库可能处于不正确状态。
恢复策略:系统重新启动时,恢复程序让所有非正常终止的事务回滚,强行撤消(UNDO)所有未完成事务
②发生系统故障时,有些已完成的事务可能有一部分甚至全部留在缓冲区,尚未写回到磁盘上的物理数据库中,系统故障使得这些事务对数据库的修改部分或全部丢失
恢复策略:系统重新启动时,恢复程序需要重做(REDO)所有已提交的事务
3.介质故障:称为硬故障,指外存故障。例如磁盘损坏、磁头碰撞、瞬时强磁场干扰。介质故障比前两类故障的可能性小得多,但破坏性大得多
恢复策略:①重装数据库 ②重做已完成的事务
4.计算机病毒
10.4 恢复的实现技术
一、恢复操作的基本原理:冗余
利用存储在系统别处的冗余数据来重建数据库中已被破坏或不正确的那部分数据
二、恢复机制涉及的关键问题
1. 如何建立冗余数据
2. 如何利用这些冗余数据实施数据库恢复
10.4.1 数据转储
1.转储是指数据库管理员定期地将整个数据库复制到磁带、磁盘或其他存储介质上保存起来的过程
2.备用的数据文本称为后备副本(backup)或后援副本
3.转储方法:
(1)静态转储与动态转储
①静态转储:在系统中无运行事务时进行的转储操作
②动态转储:转储操作与用户事务并发进行
l例在转储期间的某时刻Tc,系统把数据A=100转储到磁带上,而在下一时刻Td,某一事务将A改为200。后备副本上的A过时了
※利用动态转储得到的副本进行故障恢复
n需要把动态转储期间各事务对数据库的修改活动登记下来,建立日志文件
n后备副本加上日志文件就能把数据库恢复到某一时刻的正确状态
(2)海量转储与增量转储
①海量转储: 每次转储全部数据库
②增量转储: 只转储上次转储后更新过的数据
海量转储与增量转储比较
n从恢复角度看,使用海量转储得到的后备副本进行恢复往往更方便
n如果数据库很大,事务处理又十分频繁,则增量转储方式更实用更有效
10.4.2 登记日志文件
1.日志文件的格式和内容
①日志文件(log file)是用来记录事务对数据库的更新操作的文件
②日志文件的格式:以记录为单位的日志文件;以数据块为单位的日志文件
2.日志文件的作用
注意:
在静态转储方式中,也可以建立日志文件。
l当数据库毁坏后可重新装入后援副本把数据库恢复到转储结束时刻的正确状态
l利用日志文件,把已完成的事务进行重做处理
l对故障发生时尚未完成的事务进行撤销处理
l不必重新运行那些已完成的事务程序就可把数据库恢复到故障前某一时刻的正确状态
3.登记日志文件
为保证数据库是可恢复的,登记日志文件时必须遵循两条原则
n登记的次序严格按并发事务执行的时间次序
n必须先写日志文件,后写数据库
10.5 具有检查点的恢复技术
10.6 数据库镜像
1.介质故障是对系统影响最为严重的一种故障,严重影响数据库的可用性
提高数据库可用性的解决方案:数据库镜像(Mirror)
2.数据库镜像
n数据库管理系统自动把整个数据库或其中的关键数据复制到另一个磁盘上
n数据库管理系统自动保证镜像数据与主数据的一致性,每当主数据库更新时,数据库管理系统自动把更新后的数据复制过去
3.数据库镜像的用途
①出现介质故障时:可由镜像磁盘继续提供使用,同时数据库管理系统自动利用镜像磁盘数据进行数据库的恢复,不需要关闭系统和重装数据库副本
②没有出现故障时:可用于并发操作,一个用户对数据加排他锁修改数据,其他用户可以读镜像数据库上的数据,而不必等待该用户释放锁
4.频繁地复制数据自然会降低系统运行效率,在实际应用中用户往往只选择对关键数据和日志文件镜像
10.8 小结
1.事务的概念和性质
2.故障的种类:事务故障;系统故障;介质故障
3.恢复中最经常使用的技术:数据库转储;登记日志文件
4.恢复的基本原理:利用存储在后备副本、日志文件和数据库镜像中的冗余数据来重建数据库