数据库总结_日志篇

数据库日志(根据HIT战神讲义截取,仅供个人复习)

一、事务所涉及到的

数据库通常由元素构成,通常一个元素=1个磁盘块也可以更小,等于1条记录或者更大等于1个关系。

每个事务都会读写某些元素

READ(X,t):将元素X读到事务的局部变量t中;

WRITE(X,t):将事务局部变量t写回元素X;

INPUT(X):将元素X从磁盘读入到内存缓冲区中;

OUTPUT(X):将元素X写回到磁盘中。

每个事务都以提交或者撤销结束

COMMIT:事务提交

ABORT:事务撤销

DBMS需要保证事务

  1. 持久性

    • 已提交的事务——缓冲区内容保证写回磁盘
    • 未提交的事务——缓冲区内容不能影响磁盘
  2. 原子性

    事务的所有操作,要么全都执行,要么全不执行。

注意:缓冲区内容和磁盘内容并不是时刻保持一致的。

二、不同缓冲区策略

Force:内存中的数据最晚在commit的时候写入磁盘。

No steal:不允许在事务commit之前把内存中的数据写入磁盘。

No force:内存中的数据可以一直保留,在commit之后过一段时间再写入磁盘。此时在系统崩溃的时候可能还没写入到磁盘,需要Redo,此方式较为灵活。

Steal:允许事务commit之前把内存中的数据写入磁盘,此时若系统在commit之前崩溃时,已经有数据写入到磁盘了,要恢复到崩溃前的状态,需要Undo,此方式同样较为灵活。

当前最常用:Steal + No force

三、关于日志

三种日志记录内容和记录次序不同,恢复策略也不同。

发生系统故障时,使用日志进行恢复:

  • 故障时已提交的事务,重做Redo;
  • 故障时未提交的事务,撤销Undo。

四、Undo型日志及其故障恢复

定义

利用Undo日志恢复手段


检查点

五、Redo型日志及其故障恢复

定义

Redo日志实例

利用Redo日志恢复手段


检查点

执行顺序

六、Undo/Redo结合型日志及其故障恢复

Redo/Undo日志比较

定义

利用Undo/Redo日志恢复手段



执行顺序

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值