第十章数据库恢复技术习题

引言

1 事务 :
用户定义的一个数据库操作序列,这些操作是要么不做,要么全做,是一个不可分割的工作单位。

begin transaction

commit % 提交 
rollback % 回滚事务

2 由定义可知,事务是具有原子性的。同时也具有一致性,这个性质与原子性有关。举个例子 。


 create procedure pro_tran 
 @incount int ,@outcount int ,@amount float 
 as 
 begin transaction trans
  declare 
  @totaldepostionout float,
  @totalDepositionin float,
  @inaccounttion int ;
  select @totaldepostionout =total from account where accountnum=@outcount;
  if @totaldepostionout is null 
  begin 
   print'转出账户不再';
   rollback  transaction trans;
   return ;
   end;
   select @inaccounttion =accountnum from account  where accountnum =@inaccounttion;

   if @inaccounttion is null
   begin 
   print'转入账户不存在'
   rollback transaction trans 
   return 
   end;

 begin 
 update account set total=total -@amount where accountnum =@outcount;
 update account set total =total +@amount where accountnum =@incount;
 print '请取走银行卡'
 commit transaction trans
 return 
 end

账户a向账户b 转账,可以分为两个部分,一个是从账户a 取,第二个是账户b存,这两个过程如果只是做一个的话,数据库将会处于一种不正确的状态,不一致性。
3.还具有 隔离性,持续性

习题

P305
4
(1) T 1 , T 3 是 c o m m i t T_1,T_3是commit T1,T3commit 状态, T 2 T_2 T2处于rollback, T 4 T_4 T4 没有commit ,因此 T 1 , T 3 T_1,T_3 T1,T3 重做, T 4 T_4 T4撤销
(2) T 1 T_1 T1处于commit 应重做, T 3 T_3 T3没有结束应该撤销, T 2 T_2 T2 处于rollback状态,相当于没有这个事务。
(3) T 1 T_1 T1重做, T 2 , T 3 T_2,T_3 T2,T3撤销
(4) T 1 T_1 T1 重写, T 2 T_2 T2rollback

5
(1)根据4(1)a=8,b=7,c=11
(2)只有 T 1 T_1 T1重做 即a=10,b=0,c=11
(3)只有 T 1 T_1 T1重做 ,a=10,b=0,c=11
(4) 同(2) (3)
(5)a=10,b=0,c=11
(6) 没有重做的事务 因此a=0,b=0,c=0

总结

在实际的应用中数据库的恢复技术既十分重要的,要对事务故障,系统故障,以及介质故障进行恢复。数据转储和登记日志文件是常用的手段,基本原理是利用存储在后备副本,日志文件以及数据库镜像中的冗余数据重建数据库。

猜你喜欢

转载自blog.csdn.net/weixin_44724691/article/details/105869136