第8章.数据库管理
1.一个程序中包含多个事务
2.ACID性质
(1)原子性(Atomicity):事务对数据库的更新要么全部起作用,要么都不起作用
(2)一致性(Consistency):一个事务独立执行的结果,应使数据库从一个一致性状态转变为另一个一致性状态
(3)隔离性(Isolation):事务相互隔离
(4)持久性(Durability):事务一旦成功提交,对数据库的更新永久有效
3.故障分类
(1)事务故障:事务运行至正常终止点前被终止
(2)系统故障:引起系统停止的事件(软故障)
(3)介质故障:磁盘上物理数据被破坏(硬故障)
4.建立冗余数据
(1)数据库转储:DBA将数据库复制到其他硬盘,这些备用数据文本称为“后备副本”
冷/热备份:根据进行备份时数据库是否在运行来划分
全/增量备份:根据“完整备份数据库文件”还是“只备份新增文件”进行划分
(2)日志文件:日志文件是记录事务对数据库的更新操作的文件。
5.恢复策略
(1)事务故障的恢复(由系统自动完成):恢复子系统应撤销(UNDO)此事务已对数据库进行的修改。
反向扫描日志文件,依次执行逆操作
(2)系统故障的恢复(由系统自动完成):撤销故障发生时未完成的事务,重做已完成的事务
正向扫描日志文件,得到undo和redo队列
反向扫描日志文件,对undo队列中的事务执行逆操作
正向扫描日志文件,重做redo队列中事务的操作
(3)介质故障的恢复:
(1)装入最新的后备副本,使数据库恢复到最近一次转储时的一致状态
(2)装入有关的日志文件副本,重做已提交的所有事务
(4)检查点方法
DBMS定时设置检查点,在检查点时,进行以下操作
1.将日志缓冲区中日志记录写入磁盘
2.将数据库缓冲区中修改过的缓冲块内容写入磁盘
3.写一个检查点记录到磁盘(保存到日志文件),内容包括
检查点时刻,正在活动的事务
每个事务最近日志记录地址
4.将磁盘中日志检查点记录的地址写入“重新启动文件”
6.并发控制
(1)数据不一致性问题
丢失更新:一个事务对数据库的更新被另一个事务的更新所覆盖
读“脏数据”:A修改某一数据,B读取该数据,A撤销这次修改,则B读入的数据为“脏数据”
不可重复读:A读取某一数据,B更新了该数据,A再次读取该项数据时发现值不同
(不可重复读中还包含了“幻行”现象,即A再次读取时发现数据多了/少了)
(2)
可串行化调度:与某一串行调度执行结果等价的并发调度
可串行性:判断并发事务正确性的唯一准则
7.封锁协议
(1)PX协议(解决丢失更新):读写数据前,先要加X锁
PXC协议:PX协议加上X锁的解除操作合并到事务的结束操作(COMMIT或ROLLBACK)中
(2)PS协议(解除读”脏数据“和不可重复读):读数据前要先获得S锁。若要写数据,需要将S锁升级为X锁。
PSC协议:PS协议加上S锁的解除操作应该合并到事务的结束(COMMIT或ROLLBACK)操作中。
(3)活锁:系统可能使某个事务永远处于等待状态,得不到封锁机会
避免活锁:先来先服务
死锁:两个或以上事务都处在等待状态,互相等待对方解锁
(4)两段锁协议(保证并行调度的可串行性)
将事务分为 获得封锁 和 释放封锁 两个阶段
所有事务都遵守两段锁协议,则这个并行调度是可串行化调度
两段锁协议不能解决死锁
8.SQL中的完整性约束:域约束,表约束(建表时的NOT NULL,PRIMARY KEY之类的),断言(当约束涉及多个关系或聚合操作时使用)
1720

被折叠的 条评论
为什么被折叠?



