第十章、数据库恢复技术
10.1 事务的基本概念
所谓事务是用户定义的一个数据库操作序列,这些操作要么全做,要么全不做,是一个不可分割的工作单位。
BEGIN TRANSACTION;
COMMIT;
ROLLBACK;
COMMIT表示提交,即提交事务的所有操作。ROLLBACK表示回滚,即在事务运行的过程中发生了某种故障,事务不能继续执行,系统将事务中对数据库的所有已完成的操作全部撤销,回滚到事务开始时的状态。
事务的ACID特性:
事务具有4个特性:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持续性(Durability)。这4个特性简称为ACID特性(ACID properties)。
- 原子性:事务是数据库的逻辑工作单位,事务中包括的诸操作要么都做,要么都不做。
- 一致性:事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。转账的两个操作要么全做,要么全不做。
- 隔离性:一个事务的执行不能被其他事务干扰。
- 持续性:指一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。
10.2 故障的种类
事务内部故障:
例如,银行转账事务,这个事务把一笔金额从一个账户甲转给另一个账户乙。事务撤销。
BEGIN TRANSACTION
读账户甲的余额BALANCE;
BALANCE=BALANCE-AMOUNT; /*AMOUNT为转账金额*/
IF(BALANCE <O)THEN
{打印'金额不足,不能转账; /*事务内部可能造成事务被回滚的情况*/
ROLLBACK;} /*撤销刚才的修改,恢复事务*/
ELSE
{读账户乙的余额BALANCE1;
BALANCE1=BALANCE1+AMOUNT;
写回BALANCE1;
COMMIT;}
系统故障:系统故障是指造成系统停止运转的任何事件,使得系统要重新启动。重做。
介质故障:系统故障常称为软故障(soft crash),介质故障称为硬故障(hard crash)。
计算机病毒
10.3 恢复的实现技术
建立冗余数据最常用的技术是数据转储和登记日志文件(logging)。
第十一章、并发控制
并发控制的主要技术有封锁(locking)、时间截(timestamp)、乐观控制法(optimisticscheduler)和多版本并发控制(multi-version concurrency control,MVCC)等。
11.1 封锁
排他锁又称为写锁。若事务T对数据对象A加上X锁,则只允许T读取和修改A,其他任何事务都不能再对A加任何类型的锁,直到T释放A上的锁为止。
共享锁又称为读锁。若事务T对数据对象A加上S锁,则事务T可以读A但不能修改A,其他事务只能再对A加S锁,而不能加X锁,直到T释放A上的S锁为止。
11.2 封锁协议
一级封锁协议:事务T在修改数据R之前必须先对其加X锁,直到事务结束才释放。事务结束包括正常结束(COMMIT)和非正常结束(ROLLBACK)。
二级封锁协议:二在一级封锁协议基础上增加事务T在读取数据R之前必须先对其加S锁,读完后即可释放S锁。
三级封锁协议:在一级封锁协议的基础上增加事务T在读取数据R之前必须先对其加S锁,直到事务结束才释放。
11.3 活锁与死锁
避免活锁的简单方法是采用先来先服务的策略。
死锁的诊断与解除:数据库系统中诊断死锁的方法与操作系统类似,一般使用超时法或事务等待图法。
多个事务的并发执行是正确的,当且仅当其结果与按某一次序串行地执行这些事务时的结果相同,称这种调度策略为可串行化( serializable)调度。可串行性(serializability)是并发事务正确调度的准则。