数据库日志理解

用户commit了,数据就不能丢
rollback,就必须没有
undo撤销
redo 重干

shadow paging
我要修改的的东西,我先另起一页
在这里插入图片描述
commit的时候要刷,指针要改,垃圾要清理

sqlite对于shadowpage的优化,日志中放原始页
在这里插入图片描述
WAL
预写日志
先把日志刷到磁盘里,再刷数据
用户commit,保证日志已经刷进去了
日志长什么样
在这里插入图片描述
断电了
在这里插入图片描述
扫描磁盘日志
优化
commit的时候必须刷日志,但也挺麻烦,频繁IO,通过组提交
多攒几个commit,一起提交
物理日志
每个页二进制数据偏移的变化
缺点:比如update 所有人的号
逻辑日志
用户发的sql语句
缺点:用户想发一个now,或者limit,是随机的
数据什么时候刷盘
在这里插入图片描述
自己理解,物理日志把redo和undo写了一起了

checkpoints
在这里插入图片描述
redo和undo是一个操作
redo就是数据没刷到磁盘上,但日志刷上去了,断电了
undo就是干一半断电了。就想上面图中T3要干的事儿
这些操作可以用所谓的物理日志,逻辑日志去实现

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值