程序员

logging in database

2018-03-19  本文已影响44人  july2993

一些概念

NO-STEAL + FORCE

shadow paging, 数据库维护两个拷贝master, shadow(像boltdb), 更新只在shadow做,commit的时候切master到shadow(boltdb 两个meta page,txnid最大的那个生效的是当前master, metapage有个指向root结点的pointer, 修改的时候从低往上到根结点做copy on write).

缺点

write-ahead log

全部修改先写log到一个文件, log信息要包含足够信息可以redo&redo恢复到crash之前到状态, commit的时候写一个commit的log落地持久化了才可返回给应用。
Buffer bool: STEAL + NO-FORCE(几乎每个DBMS都使用这个)

一个修改log包含的信息

为什么需要用STEAL

checkpoints

WAL会越来越大,所以需要定期做checkpoint刷全部buffer到磁盘。


reference

http://15445.courses.cs.cmu.edu/fall2017/slides/21-logging.pdf
http://15445.courses.cs.cmu.edu/fall2017/slides/22-recovery.pdf

上一篇 下一篇

猜你喜欢

热点阅读