数据库的控制功能
在DBS运行时,DBMS要对DB进行监控,以保证整个系统的正常运转,防止数据意外丢失和不一致数据产生。DBMS对DB的监控,称为数据库的控制,有时也称为数据库的保护。对数据库的控制主要通过4个方面实现:数据库的恢复、并发控制、完整性控制和安全性控制。每一方面都构成了DBMS的一个子系统。
- 事务管理(ACID)属性
- 故障恢复
- 并发控制
- 数据库的完整性
- 数据库的安全性
事务管理(ACID)属性
- 事务(transaction)定义
- 一个数据库操作序列,不可分割的工作单位(要么全做,要么全不做)
- 事务时DBS运行的最小逻辑工作单位,是恢复和并发控制的基本单位
- 事务以BEGIN TRANSACTION 语句开始,以COMMIT语句或ROLLBACK语句结束
eg
设银行数据库中有一转账事务T
BEGIN TRANSACTION;
read(A);
A:=A-50
write(A);
if(A<0)
ROLLBACK;
else
{
read(B);
B:=B+50;
COMMIT;
}
2.事务的ACID特性
- 原子性(Atomicity)
- 一致性(Consistency)
- 隔离性(Isolation)
- 持久性(Durability)
-
事务的状态及其转化
1-5-1.png
故障恢复
-
故障是不可避免的
- 系统故障: 计算机软、硬件故障
- 人为故障:操作员的失误、恶意的破坏等
-
数据库的恢复
把数据库从错误状态恢复到已知的正确状态(亦称为一致状态或完整状态),这部分主要内容: 故障分类和恢复,检查点技术,数据库镜像技术 -
恢复操作的基本原理:冗余
利用存储在系统其他地方的荣誉数据来重建数据库。 -
建立冗余数据
- 数据存储(backup)
-
登录日志文件(logging)
-
故障的种类
- 事务内部故障
- 系统故障:软故障
- 介质故障:应故障
- 计算机病毒:常导致数据不一致
一、事务内部故障分类
-
可预见
- 通过事务程序本身可发现
-
非预期(不能由应用程序处理)
- 运算溢出
- 并发事务发送死锁而被选中撤销盖事务
- 违反了某些完整性限制等
注: 事务故障意味着事务没有达到预期的终点(COMMIT或ROLLBACK),数据库可能处于不正确的状态。恢复:撤销事务(UNDO),强行回滚。
二、 系统故障或软故障:是指造成系统停止运转的任何事件(硬件错误、操作系统故障、DBMS代码错误、系统断电),使得系统要重新启动
- 故障时,事务未提交----强行撤销(UNDO)
- 故障时,事务已提交,但缓冲区中的信息尚未写回到磁盘---重做(REDO)
三、在发送介质故障(硬故障)和遭受病毒破坏时,磁盘上的物理数据遭到毁灭性破坏。此时,恢复的方法如下: - 重装转储的后备副本到新的磁盘,使数据恢复到转储时的一致状态
- 在日志中找出转储以后所有提交的事务
- 对这些已提交的事务进行REDO处理,将数据库恢复到故障前某一时刻的一致状态。
注: 事务故障和系统故障的恢复由系统自动进行
介质故障的恢复需要DBA配合执行 - 利用日志进行故障恢复的两个问题
1.搜索日志将耗费大量的时间- REDO处理:重新执行,浪费了大量时间
解决方案一 :
具有检查点(checkpoint)的恢复技术
- REDO处理:重新执行,浪费了大量时间
- 在日志文件中增加检查点记录(checkpoint): 记录检查点时刻所有正在执行的事务清单
- 增加重新开始文件: 记录各个检查点在日志文件中的地址
检查点技术
利用检查点恢复技术
-
提高数据库科用性的解决方案---数据库镜像(Mirror)
DBMS自动把整个数据库或其中的关键数据复制到另一个磁盘上、并保证镜像数据与主数据库的一致性,每当主数据库更新时,DBMS自动把更新侯的数据复制过去
数据库的控制主要通过四个方面实现:数据库恢复、并发控制、完整性控制和安全性控制。
事务的ACID特性:原子性、一致性、隔离性、持久性
事务的状态:活动状态,部分提交状态,失败状态、中止状态、提交状态
故障的种类及其恢复:事务内部故障、系统故障、介质故障、计算机病毒
计算机病毒具有检查点(checkpoint)的恢复技术:检查点记录、重新开始文件
数据库镜像