CMU 15-445/645-Note10-Database Logging & Recovery

0.写在前面

based on CMU 15-445/645 2020fall, Lecture #20 ~ Lecture #21.

1: CRASH RECOVERY

Motivation:当我们遇到崩溃和故障的时候,我们想要持久化对数据库的修改。
恢复算法有2个part:
1)针对DB运行中的transaction。
2)当遇上重启或者崩溃的时候,利用第一个part中的信息来恢复。

1.1 Type

Type #1 – Transaction Failures
Type #2 – System Failures(软件、硬件)
Type #3 – Storage Media Failures(DBMS无法恢复)

1.2 例子

CMU 15-445/645-Note10-Database Logging & Recovery_第1张图片
核心问题:当T1对A修改,T2对B修改之后,T2COMMIT,此时Buffer Pool中A,B是否需要写到磁盘中。
由此引出2个Buffer Pool Policy。

1.2.1 STEAL POLICY
STEAL: Is allowed.
NO-STEAL: Is not allowed.
简单概括:没有COMMIT的事务是否能写到磁盘中。
如上述例子中T1没有提交,如果是NO-STEAL的话就BP中A的修改就不能写到磁盘中。

1.2.2 FORCE POLICY
FORCE: Is required.
NO-FORCE: Is not required.
简单概括:在提交事务之前,事务的更新已经写到了non-volatile storage上。
CMU 15-445/645-Note10-Database Logging & Recovery_第2张图片
CMU 15-445/645-Note10-Database Logging & Recovery_第3张图片
NO-STEAL + FORCE这种策略的优点和缺点:
1)容易实现。不需要undo和redo。
2)但是很明显的缺点:需要大量的内存。

1.3 SHADOW PAGING

基于1.2我们提出SHADOW PAGING这种策略。
有2个独立的copies(master和shadow),事务每次在shadow中更新。COMMIT之后才会更新到master中。
Buffer Pool Policy: NO-STEAL + FORCE
缺点:复制page table的成本高;提交事务的开销高。

1.4 WRITE-AHEAD LOG(WAL)

SHADOW PAGING是随机写的,不是顺序写,这就导致开销会大大增加。
在data files中单独开一个log file来记录事务对数据库的变化。
在事务的操作写入磁盘之前,log file已经被提前写入。

Buffer Pool Policy: STEAL + NO-FORCE

log中包含的信息:
1)Transaction Id
2)Object Id
3)Before Value (UNDO)
4)After Value (REDO)

CMU 15-445/645-Note10-Database Logging & Recovery_第4张图片
WAL GROUP COMMIT
CMU 15-445/645-Note10-Database Logging & Recovery_第5张图片
有2个WAL Buffers,一个写满之后写到disk中,此时如果有需要写的话,可以写到第二个中,提高效率。如果等待时间到了,还没有新的写入,可以直接flush到磁盘中。

几乎所有的DBMS在Buffer中使用NO-FORCE + STEAL策略。
因为在运行时间会非常快,但是恢复会相对比较慢(要进行Undo + Redo操作)。

1.5 LOGGING SCHEMES

1)Physical Logging
记录每一条数据的改变。
example:git diff

2)Logical Logging
记录的是高级别的操作,例如UPDATE, DELETE, and INSERT queries。

两种方法各有优劣:
Logical Logging需要记录的数据更少,但是Logical Logging想要恢复数据会更难。

3)PHYSIOLOGICAL LOGGING
现在采用的是Physical Logging和Logical Logging混合。
Redo Log采用先以Page为单位记录日志(物理记法),每个Page里再采用逻辑记法(记录Page里的哪一行修改了)。这种记法就叫做Physiological Logging。

CMU 15-445/645-Note10-Database Logging & Recovery_第6张图片

1.6 Check Point

CMU 15-445/645-Note10-Database Logging & Recovery_第7张图片

1.7 Algorithms for Recovery and Isolation Exploiting Semantics(ARIES)

ARIES三大主要思想:
CMU 15-445/645-Note10-Database Logging & Recovery_第8张图片

1.8 Log Sequence Numbers(LSN)

1.8.1 LSN的类型:
CMU 15-445/645-Note10-Database Logging & Recovery_第9张图片
pageLSN会在每次txn修改之后更新。
flushedLSN会在DBMS将WAL Buffer中写到磁盘的时候更新。
1.8.2 例子
CMU 15-445/645-Note10-Database Logging & Recovery_第10张图片
flushLSN = 16 > 19 pageLSN,这是不安全的。
CMU 15-445/645-Note10-Database Logging & Recovery_第11张图片

你可能感兴趣的:(CMU-15/445,数据库,database,CMU15-445)