undo log是怎么保证事务原子性的

最近在学数据库,碰到一个问题想不通,就是使用redolog不就可以保证事务原子性了吗。
首先写写我理解的流程:事务提交-》redolog buffer 写入磁盘-》给用户返回事务提交成功-》后台线程在合适的时机将buffer pool中的数据写入磁盘(如果失败则从redolog中恢复)。
那如果是这样的话,在事务提交以前,所有操作都是在内存中进行的,undolog还有什么意义呢。毕竟只有在事务提交以后所有操作才会全部被写到磁盘中,而这时redolog也已经记录了全部的操作了,我们直接从redolog中拿不行吗。
全部评论
有一个版本链表,头插法,从头遍历的。
1 回复 分享
发布于 2024-04-08 09:46 上海
查找效率的问题,undolog直接版本链,redolog是一个连续的文件,你不能从头一个个找吧
1 回复 分享
发布于 2024-03-31 17:23 江苏
steal/no-steal: 是否允许一个uncommitted的事务将修改更新到磁盘,如果是steal策略,那么此时磁盘上就可能包含uncommitted的数据,因此系统需要记录undo log,以防事务abort时进行回滚(roll-back)。如果是no steal策略,就表示磁盘上不会存在uncommitted数据,因此无需回滚操作,也就无需记录undo log。 mysql采用的是steal策略
点赞 回复 分享
发布于 2024-04-08 11:21 江苏
原子性是要么都做,要么都不做,redo保证都做,undo保证都不做
点赞 回复 分享
发布于 2024-04-08 08:41 湖北
两个对应不同的情景,undolog对应事务执行失败需要回滚到之前的状态,redolog方便断电之后的持久化
点赞 回复 分享
发布于 2024-03-20 17:17 湖北
单只讲undolog保证原子性这一条,mvcc暂不讨论
点赞 回复 分享
发布于 2024-03-20 15:59 湖南

相关推荐

点赞 评论 收藏
分享
来,说点可能被同行“骂”的大实话。🙊当初接数字马力Offer时,朋友都说:“蚂蚁的“内包”公司?你想清楚啊!”但入职快一年后的今天,我反而对他有了不一样的看法!🔹 是偏见?还是信息差!之前没入职之前外面都在说什么岗位低人一等这类。实际上:这种情况不可至否,不能保证每个团队都是其乐融融。但我在的部门以及我了解的周边同事都还是十分好相处的~和蚂蚁师兄师姐之间也经常开一些小玩笑。总之:身份是蚂蚁公司给的,地位是自己挣的(一个傲娇女孩的自述)。🔹 待遇?玩的就是真实!试用期工资全额发!六点下班跑得快(早9晚6或者早10晚7,动态打卡),公积金顶格交。别听那些画饼的,到手的钱和下班的时间才是真的(都是牛马何必难为牛马)。🔹 能不能学到技术?来了就“后悔”!我们拥有权限直通蚂蚁知识库,技术栈多到学不完。说“学不到东西”的人,来了可能后悔——后悔来晚了(哈哈哈哈,可以不学但是不能没有)!💥 内推地址:https://app.mokahr.com/su/ueoyhg❗我的内推码:NTA6Nvs走我的内推,可以直达业务部门,面试流程更快速,进度可查!今天新放HC,之前挂过也能再战!秋招已经正式开始啦~机会就摆在这,敢不敢来试一试呢?(和我一样,做个勇敢的女孩)
注意格局:去年超发意向是忘了
帮你内推|数字马力 校招
点赞 评论 收藏
分享
评论
点赞
8
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务