一、数据库的恢复
1、事务的概念:事务是一个操作序列。事务以BEGIN TRANSACTION语句开始,以COMMIT(提交)语句或ROLLBACK(回退或撤消)语句结束。 一个程序的执行可通过若干事务的执行序列来完成。
2、事务的性质:
原子性(atomicity):这些操作要么什么都做,要么都不做,是一个不可分割的工作单位。
一致性(consistency):一个符合逻辑的稳定状态到另一个符合逻辑的稳定状态
隔离性(isolation):并发执行的事务之间是不能互相干扰的
持久性(durability):一个事务一旦提交对数据的改变就是永久的。
3、故障类型和恢复方法
故障类型恢复方法:
4、恢复的基本原则和实现方法
恢复的基本原则:“冗余”,即数据的重复存储。
实现方法有:
(1)定期对数据库进行复制或转储(dump)。(静态转储(无运行事务时进行)、动态转储(随时可以,转储与事务并发执行)、海量转储(一次性转储全部数据库)和增量转储(每次只转储更新部分)。)
(2)建立“日志”文件。(更新操作,用于恢复)
5、运行记录优先原则(即先记录,再更新,先记完,再结束)
(1)至少要等相应的运行记录已经写入“日志”文件后,才能允许事务往数据库在写数据。
(2)直到事务的所有运行记录都已写入运行“日志”文件后,才能允许事务完成“END TRANSACTION”处理。
具有有检查点的恢复技术:P303UNDO队列与REDO队列
重新开始文件/检查点(日志文件中)
1、并发控制带来的三类问题:
P311图11.2
问题的主要原因:办法操作破坏了事务的隔离性
2、为解决并发控制带来的问题,通常要采用封锁(locking)技术,常用的封锁有:排它型封锁(X封锁)(写锁)和共享型封锁(S封锁)(读锁)两种。
X最强,IS最弱
P322图11.11数据锁的相容矩阵
3、死锁和活锁
活锁:是指某个事务永远处于等待状态,得不到执行的现象。
方法:采用“先来先服务”策略。
死锁:有两个或以上的事务处于等待状态,每个事务都在等待另一个事务解除封锁,它才能继续执行下去,结果任何一个事务都无法执行,这种现象就是死锁。
方法:由DBMS中的“死锁测试程序”来检查,如发现死锁则牺牲一个事务,并做回退操作,解除它的所有封锁。
意向锁:对于某个结点加意向锁,则说明该节点的下层结点正在被加锁。
4、并发事务正确调度的准则是事务可串行化。
5、事务遵守两段锁协议是可串行化调度的充分条件