数据库恢复技术|数据库期末复习

数据库恢复技术

事务(Transaction)

定义
一个数据库操作序列
一个不可分割的工作单位
恢复和并发控制的基本单位
事务和程序比较
在关系数据库中,一个事务可以是一条或多条SQL语句,也可以
包含一个或多个程序。
一个程序通常包含多个事务

  • 显式定义方式
    BEGIN TRANSACTION BEGIN TRANSACTION
    SQL 语句1 SQL 语句1
    SQL 语句2 SQL 语句2
    。。。。。 。。。。。
    COMMIT ROLLBACK
  • 隐式方式
    当用户没有显式地定义事务时,DBMS按缺省规定自动划
    二、事务的特性(ACID特性)
    事务的ACID特性:
    — 原子性(Atomicity)
    — 一致性(Consistency)
    — 隔离性(Isolation)
    — 持续性(Durability)
    事务状态
    — 活动状态 — 部分提交状态 — 失败状态 — 提交状态 — 终止状态
    在这里插入图片描述

数据库恢复概述

故障是不可避免的
— 系统故障:计算机软、硬件故障
— 人为故障:操作员的失误、恶意的破坏等。
数据库的恢复
— 把数据库从错误状态恢复到某一已知的正确状态(亦称为一致状态或完整状态)

故障的种类
— 事务内部的故障
— 系统故障
— 介质故障
— 计算机病毒

事务内部的故障
  • 有的是可以通过事务程序本身发现的(见下面转账事的例子)
  • 有的是非预期的
例如,银行转账事务,这个事务把一笔金额从一个账户甲转给另一个账户乙。
BEGIN TRANSACTION
读账户甲的余额BALANCE;
BALANCE=BALANCE-AMOUNT;(AMOUNT 为转账金额)
写回BALANCE;
IF(BALANCE < 0 ) THEN
{
打印'金额不足,不能转账';
ROLLBACK;(撤销刚才的修改,恢复事务)
}
ELSE
{
读账户乙的余额BALANCE1;
BALANCE1=BALANCE1+AMOUNT;
写回BALANCE1;
COMMIT;}

这个例子所包括的两个更新操作要么全部完成要么全部不做。否则就会使数据库处于不一致状态,例如只把账户甲的余额减少了而没有把账户乙的余额增加。
在这段程序中若产生账户甲余额不足的情况,应用程序可以发现并让事务滚回,撤销已作的修改,恢复数据库到正确
事务内部更多的故障是非预期的,是不能由应用程序处理的。
运算溢出
并发事务发生死锁而被选中撤销该事务
违反了某些完整性限制等
以后,事务故障仅指这类非预期的故障
— 事务故障的恢复:撤消事务(UNDO)

系统故障

称为软故障,是指造成系统停止运转的任何事件,使得系统要重新启动。
— 整个系统的正常运行突然被破坏
— 所有正在运行的事务都非正常终止
— 不破坏数据库
— 内存中数据库缓冲区的信息全部丢失

系统故障的常见原因
— 特定类型的硬件错误(如CPU故障)
— 操作系统故障
— DBMS代码错误
— 系统断电

系统故障的恢复
— 发生系统故障时,事务未提交
恢复策略:强行撤消(UNDO)所有未完成事务
— 发生系统故障时,

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值