数据库
首页 > 数据库> > (P74-78)数据库系统下-运行日志

(P74-78)数据库系统下-运行日志

作者:互联网

文章目录

1.事务涉及到的元素

数据库通常由元素构成

每个事务都会读/写某些元素
在这里插入图片描述

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

DBMS需要保证事务的:

2.不同的缓冲区策略会影响事务的持久性

缓冲区处理策略

3.事务故障会影响事务的原子性

Begin TRANSACTION
READ(A,t);
t:=t*2;
WRITE(A,t);
READ(B,t);
t:=t*2;
WRITE(B,t)
COMMIT;
End TRANSACTION

在这里插入图片描述
在这里插入图片描述

4.怎样记录日志?

一个包含日志记录的只能追加的顺序文件, 不同事务的日志记录交错存储,按发生时间存储

日志记录的信息

<Start T>,表示事务T已经开始
<Commit T>,表示事务T成功完成
<Abort T>,事务T未成功,被中止
<T, X, v1> 或者 <T, X, v2> 或者 <T, X, v1,v2>
表示事务T改变了数据库元素X,X原来的值为v1(X的旧值),X新的值为v2.

缓冲区处理策略与日志/恢复策略的关系
在这里插入图片描述

5.Undo型日志及其故障恢复

Undo型日志

首先, <T, X, v>被写到日志中(把更新前的值写入磁盘)
其次,OUTPUT(X)	(把缓冲区的内容写入磁盘)
最后, <COMMIT T>或<ABORT T>被写到日志中
<STARTT>….<COMMITT>….=yes
<STARTT>….<ABORTT>…….=no(已结束,但未完成)
<STARTT>……………………… =no
<COMMITT>:标记T已完成
<ABORTT>:标记T已结束但未完成
<T,X,v>: 如果T未完成,则将X=v写回磁盘;否则跳过;
<STARTT>:跳过

6.Redo型日志及其故障恢复

Redo型日志

首先,<T, X, v>被写到日志中(更新后的值)
其次,<COMMIT T>被写到日志中
最后,OUTPUT(X)

利用redo日志进行恢复

<STARTT>….<COMMITT>….=yes
<STARTT>….<ABORTT>…….=no(已结束,但未完成)
<STARTT>……………………… =no
<COMMITT>:标记T已完成
<ABORTT>:标记T已结束但未完成
<T,X,v>: 如果T已完成,则将X=v写回磁盘;否则跳过;
<STARTT>:跳过

检查点
非静止检查点
(1)在进行检查点设置时不必关闭系统,允许新事务进入
(2)写入一条<START CKPT(T1,…,Tk)>
其中T1,…,Tk 是所有活跃的未结束的事务
(3)将所有已提交的事务写回磁盘,
(4)继续正常的操作,直到T1,…,Tk都完成时,写入<END CKPT>

7.Undo/Redo结合型日志及其故障恢复

标签:运行日志,P74,写入,事务,Undo,检查点,磁盘,日志,78
来源: https://blog.csdn.net/u011436427/article/details/121494222