首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
AI 模拟面试
简历
求职
学习
基础学习课
实战项目课
求职辅导课
专栏&文章
竞赛
搜索
我要招人
发布职位
发布职位、邀约牛人
更多企业解决方案
AI面试、笔试、校招、雇品
HR免费试用AI面试
最新面试提效必备
登录
/
注册
澳柯玛鼠鼠
无 Java
发布于江苏
关注
已关注
取消关注
MySQL 三大日志
@一灯架构:
面试官竟然问了MySQL三大日志,幸亏我总结了八股文
1. 背景 MySQL实现事务、崩溃恢复、集群的主从复制,底层都离不开日志,所以日志是MySQL的精华所在。只有了解MySQL日志,才算是彻底搞懂MySQL。 今天一灯就带你深入浅出的学习MySQL的三大日志系统,Redo Log(重做日志)、Undo Log(恢复日志)、Bin Log(备份日志)。 2. Redo Log(重做日志) 2.1 Redo Log的内容与作用 Redo Log 记录的是物理日志,也就是磁盘数据页的修改。 作用: 用来保证服务崩溃后,仍能把事务中变更的数据持久化到磁盘上。 MySQL事务中持久性就是使用Redo Log实现的。 2.2 什么时候写入Redo Log? 从磁盘加载数据到内存 在内存中修改数据 把新数据写到Redo Log Buffer中 把Redo Log Buffer中数据持久化到Redo Log文件中 把Redo Log文件中数据持久化到数据库磁盘中 你可能会问,为什么需要写Redo Log Buffer和Redo Log FIle?直接持久化到磁盘不好吗? 直接写磁盘会有产生严重的性能问题: InnoDB在磁盘中存储的基本单元是页,可能本次修改只变更一页中几个字节,但是需要刷新整页的数据,就很浪费资源。 一个事务可能修改了多页中的数据,页之间又是不连续的,就会产生随机IO,性能更差。 这种方案叫做WAL(Write-Ahead Logging),预写日志,就是先写日志,再写磁盘。 2.3 Redo Log刷盘规则 写入Redo Log Buffer之后,并不会立即持久化到Redo Log FIle,需要等待操作系统调用fsync()操作,才会刷到磁盘上。 具体什么时候可以把Redo Log Buffer刷到Redo Log FIle中,可以通过innodb_flush_log_at_trx_commit参数配置决定。 参数值 含义 0(延迟写) 提交事务后,不会立即刷到OS Buffer中,而是等一秒后刷新到OS Buffer并调用fsync()写入Redo Log FIle,可能会丢失一秒钟的数据。 1(实时写 每次提交事务,都会刷新到OS Buffer并调用fsync()写到Redo Log FIle,性能较差 2(延迟刷新) 每次提交事务只刷新到OS Buffer,一秒后再调用fsync()写入Redo Log FIle。 InnoDB 的Redo Log File是固定大小的。可以配置为每组4个文件,每个文件的大小是 1GB,那么Redo Log File可以记录4GB的操作。 采用循环写入覆盖的方式,write pos记录开始写的位置,向后移动。checkpoint记录将要擦除的位置,也是向后移动。write pos到checkpoint之间的位置,是可写区域,checkpoint到write pos之间的位置是已写区域。 3. Undo Log(回滚日志) 3.1 Undo Log的内容与作用 Undo Log记录的是逻辑日志,也就是SQL语句。 比如:当我们执行一条insert语句时,Undo Log就记录一条相反的delete语句。 作用: 回滚事务时,恢复到修改前的数据。 实现 MVCC(多版本并发控制,Multi-Version Concurrency Control) 。 MySQL事务中原子性就是使用Undo Log实现的。 3.2 Undo Log如何回滚到上一个版本 实现方式通过两个隐藏列trx_id(最近一次提交事务的ID)和roll_pointer(上个版本的地址),建立一个版本链。并在事务中读取的时候生成一个ReadView(读视图),在Read Committed隔离级别下,每次读取都会生成一个读视图,而在Repeatable Read隔离级别下,只会在第一次读取时生成一个读视图。 4. Bin Log(备份日志) 4.1 Bin Log的内容与作用 Bin Log记录的是逻辑日志,即原始的SQL语句,是MySQL自带的。 作用: 数据备份和主从同步。 Bin Log共有三种日志格式,可以binlog_format配置参数指定。 参数值 含义 Statement 记录原始SQL语句,会导致更新时间与原库不一致。比如 update_time=now() Row 记录每行数据的变化,保证了数据与原库一致,缺点是数据量较大。 Mixed Statement和Row的混合模式,默认采用Statement模式,涉及日期、函数相关的时候采用Row模式,既减少了数据量,又保证了数据一致性。 4.2 什么时候写入Bin Log? Bin Log采用追加写入的模式,并不会覆盖原有日志,所以可以用来恢复到之前某个时刻的数据。 Bin Log也是采用WAL模式,先写日志,再写磁盘。 至于什么时候刷新到磁盘,可以sync_binlog配置参数指定。 参数值 含义 0(延迟写) 每次提交事务都不会刷盘,由系统自己决定什么时候刷盘,可能会丢失数据。 1(实时写) 每次提交事务,都会刷盘,性能较差。 N(延迟写) 提交N个事务后,才会刷盘。 加入写Bin Log之后的事务流程: 这就是二阶段提交的概念,先写处于prepare状态的Redo Log,事务提交后,再写处于commit状态的Redo Log。 知识点总结: 有了MySQL日志的基础,下篇就可以一块学习MySQL集群和主从同步了。 我是「一灯架构」,如果本文对你有帮助,欢迎各位小伙伴点赞、评论和关注,感谢各位老铁,我们下期见
点赞 2
评论 1
全部评论
推荐
最新
楼层
暂无评论,快来抢首评~
相关推荐
01-07 18:49
已编辑
牛客运营
作为mt,希望你入职第一天是这样的……
虽然我早已不记得,自己入职第一天具体发生了什么(毕竟也不是新手村的人了),但作为mt,倒是可以和大家分享:入职第一天怎么做,能给你未来的导师和同事留下一个好印象📒别迟到!尽量早一点到(或至少准时)绝对是加分项。一个有时间观念的新人,会让同事觉得你态度认真、做事靠谱,第一印象分直接拉满 💯。进工作群后,主动打招呼但不用刻意“装E”,在工作群里简单自我介绍、和大家问声好,还是很有必要的。记住要“大大方方”的啊,让团队感受到你想融入的热情。衣着干净整洁,上班前一天洗澡是基本礼仪,懂的都懂(你不洗澡也至少洗个头!)。穿一件清爽整洁的衣服,传递出你重视这份工作、也尊重身边同事的信号。主动问mt今天要...
入职第一天
点赞
评论
收藏
分享
01-05 15:13
汤臣倍健_营销倍优生(准入职员工)
汤臣倍健内推,汤臣倍健内推码
自从汤臣倍健搬了新的办公大楼以后 我恨不得立刻投简历入职这家公司🤩 - 办公区整体以多巴胺色系为基调 明亮大胆的色块搭配 好心情即刻开启~🥳 同时还配备了母婴室、文印间、休闲协作区... 新换的办公家具是人体工学办公椅+开放式办工位 旁边的超大落地窗还能俯瞰高空城景 这样的环境简直又舒服又惬意!😃 - 5F是多功能楼层 设有健身房、瑜伽室、咖啡区,甚至还有空中花园 这下在公司不花钱也能美美地健身打卡 直接省下在外面办大几百的健身卡 这不香吗!😛汤臣倍健2026届校园招聘正式启动!营销岗位机会较大【公司介绍】中国维生素与膳食补充剂行业龙头企业,国内市场占有率第一【岗位类型】营销、研发、市...
汤臣倍健公司福利 674人发布
点赞
评论
收藏
分享
2025-12-15 18:28
广东理工学院 产品经理
二本现在还能找到大厂实习嘛
点赞
评论
收藏
分享
01-05 15:41
小天才_电子工程师(准入职员工)
小天才内推,小天才内推码
6.30 投递java后端工程师岗位,当天过初筛7.1 笔试可能是因为之前在牛客上刷过1000道java题,算法和八股文什么的也准备了一个月,笔试总体感觉比较简单7.10 一轮技术面,30min自我介绍先问了非常基础的IDEA基本使用,例如debug流程、常用快捷键拷打项目,说出自己项目中两个重难点,以及自己是如何解决的java基础,介绍常见集合以及底层原理,我当时讲了List中的ArrayList和linkedlist各自原理和对比,Map中的HashMap底层原理spring中的IOC和AOP是什么,有哪些实际应用场景?java8的新特性有什么?介绍常用的stream流方法还问了一些mys...
点赞
评论
收藏
分享
评论
点赞成功,聊一聊 >
点赞
收藏
分享
评论
提到的真题
返回内容
全站热榜
更多
1
...
双非非科班2年时间的转码历程
3.2W
2
...
简历挂麻了?因为你的简历只有“宽度”没有“深度”!
1.1W
3
...
入职第一天:允许自己像个新生
9090
4
...
26秋招小结 含面经碎碎念版
5194
5
...
师门闯关记①:好学姐我听你的,就选你说的那个导师了
4195
6
...
百度java一面 28届的第一次大厂面试 感觉g了
3917
7
...
实习不忙被公司要求下周再来
3596
8
...
嵌入式学习路线分享
3419
9
...
双非老鼠的悲惨秋招
3042
10
...
“CRUD”正在消亡吗,2026该何去何从
3002
创作者周榜
更多
正在热议
更多
#
26年哪些行业会变好/更差
#
13530次浏览
179人参与
#
卷__卷不过你们,只能卷__了
#
6792次浏览
159人参与
#
MiniMax求职进展汇总
#
216次浏览
4人参与
#
去年的flag与今年的小目标
#
6499次浏览
155人参与
#
哪些公司在招寒假实习?
#
7041次浏览
84人参与
#
有深度的简历长什么样?
#
12426次浏览
262人参与
#
机械人的秋招小目标
#
25791次浏览
226人参与
#
现在前端的就业环境真的很差吗
#
488015次浏览
5882人参与
#
写论文的崩溃时刻
#
3395次浏览
99人参与
#
入职第一天
#
7610次浏览
149人参与
#
你不能接受的企业文化有哪些
#
7265次浏览
122人参与
#
央国企投递记录
#
170083次浏览
1633人参与
#
腾讯音乐求职进展汇总
#
146985次浏览
1042人参与
#
你都用AI做什么
#
4759次浏览
112人参与
#
实习教会我的事
#
48553次浏览
359人参与
#
一人分享一道面试手撕题
#
16398次浏览
671人参与
#
秋招白月光
#
645613次浏览
5009人参与
#
一人一道大厂面试题
#
112042次浏览
1253人参与
#
应届生应该先就业还是先择业
#
163329次浏览
828人参与
#
实习,不懂就问
#
148567次浏览
1337人参与
#
新凯来求职进展汇总
#
67103次浏览
174人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务