- 1、本文档共96页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据库系统及应用10课件
第十章 数据库恢复技术;10.1 事务的概念;1. 实例; 事务开始标记
UPDATE COURSE SET CNO=‘2256’ WHERE CNO=‘1156’
UPDATE SCORE SET CNO=‘2256’ WHERE CNO=‘1156’
事务结束标记(COMMIT 或 ROLLBACK);例10.2 在银行应用中,将用户A账户中的1万元转移到用户B的账户上。
这个操作要求从用户A的账户中减掉1万元,在用户B的账户上增加1万元。银行的业务规则要求增加1万元和减少1万元这两个操作要么全做,要么一个也不要做。将下面的SQL语句定义成一个事务:;EXEC SQL UPDATE Account
SET Balance = Balance + 10000
WHERE CID = B;
/*用户B的账户增加10 000元*/
EXEC SQL SELECT Balance
INTO :C_Balance
/* 取出用户A的余额,放到变量C_Balance中*/
FROM Account
WHERE CID = A;;If C_Balance 10000 then
EXEC SQL ROLLBACK;
/* 增加10 000元的操作,事务非??常结束*/
Else
/* 如果用户A的余额充足 */
{
EXEC SQL UPDATE Account
SET Balance = Balance – 10 000
/*从用户A的存款中减掉10 000元*/
WHERE CID = A;
EXEC SQL COMMIT;
/*事务正常结束*/
}; 从本例中可以看到事务是类似于具有一个入口,两个出口的一种控制结构。COMMIT是一个出口,表示事务的所有操作都完成了。ROLLBACK是另一个出口,通过撤消所有的已经做过的操作达到一个操作也没做的效果。;2. 事务的特性; ⑶ 隔离性(Isolation)
为了提高事务的吞吐率,大多数DBMS允许同时执行多个事务,就像分时操作系统为了充分利用系统资源,同时执行多个进程一样。
⑷ 持久性(Durability)
一个事务一旦完成了全部操作,它对数据库的所有更新操作的结果应反映到数据库中。
事务的这4个特性一般简称为事务的ACID特性。; 如果因为某种原因,一个事务不能从头到尾地成功执行,数据库就处于一个不一致性状态。这是不允许的。这时需要将数据库恢复到事务执行前的状态。
DBMS必须具有把数据库从错误状态恢复到某一已知的正确状态(亦称为一致性状态或完整性状态)的功能,这就是数据库的恢复。;主要有以下一些原因:
① 程序的错误,如应用程序、OS等
② 硬件的故障 如外设、CPU等
③ 操作员错误 如数据输入错误等
④ 电源问题 电压过高或过低等
⑤ 天灾 如火灾、地震等
⑥ 恶意破坏 如计算机病毒、恶意 犯罪等; ⑴ 事务故障
事务故障意味着事务没有达到预期的终点(COMMIT或者显式的ROLLBACK),因此数据库可能处于不正确的状态。
注意:事务故障只发生在事务(Transaction)上,而整个数据库系统仍在控制下运行。 ; 事务故障有的是事务本身可预料的故障,可以由事务程序本身预先发现,且让事务回退(ROLLBACK);有的是事务本身不可预料的故障,不能由事务程序实现估计,是非预期的。例如,算术运算溢出、死锁、破坏完整性约束、超时、申请资源过多、输入错误、人工操作干予等等。; ⑵ 系统故障
系统故障又称为软故障(Soft Crash)。系统故障是指造成系统停止运转的任何事情,使得系统要重新启动。例如,CPU故障、操作系统故障、DBMS故障、死循环时系统安排停止、系统崩溃、断电等。这种故障发生在系统范围内,影响当前处理的全部事务,但是数据库尚没有被破坏。; 发生系统故障时,这时内存中的信息,尤其是数据库缓冲区(在内存)中的内容都被丢失,而存储在外存储设备上的数据未受到影响。由于所有运行事务都非正常终止,一些尚未完成的事务的结果可能已送入物理数据库,从而造成数据库可能处于不正确的状态。 ; ⑶ 介质故障
使存储在外存上的数据部
文档评论(0)