首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
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
全部评论
推荐
最新
楼层
暂无评论,快来抢首评~
相关推荐
12-23 19:32
已编辑
门头沟学院 Java
美图 Java开发实习生(大数据方向)面经
处女面,面试官人很好,问的问题都不难,而且不会的题也会一直引导和提示。八股都很基础,答的比较快,所以后面大部分时间都在聊大数据相关的问题,都不太会,被狠狠拷打,应该凉了。upd:已OCQ1:课业压力如何?能实习多久?Q2:对公司地点是否了解?Q3:如何看待互联网行业的高强度加班?Q4:是否了解前端,能否进行基本的前端开发?Q5:HashMap 的底层原理是什么?Q6:HashMap 是线程安全的吗?如果不安全,用什么替代?Q7:ConcurrentHashMap 是如何实现线程安全的?Q8:解释一下悲观锁和乐观锁的区别?Q9:ReentrantLock 和 Synchronized 的区别?Q...
发面经攒人品
点赞
评论
收藏
分享
12-24 16:40
百度_高级研发工程师
团建就是过期的费列罗
曾几何时,我还没上班,或者刚上班,是非常期待团建的,那时候啥也不懂,就觉得出去吃吃喝喝多好呀,但是后来在职场里摸爬滚打多了,对团建的期待也就越来越少了。 团建就是过期的费列罗,外面看着是金子,其实内里味道根本不对,而且后面发现外面根本不是金子。 大哥,味道不对啊。 那味儿能对喽?一、团建的目的 首先搞明白,团建是公司或者部门组织的,为了让组内和组内之间、组内和组外之间、领导和下属之间,更加熟悉,更加了解,从而提升沟通协调效率,而产生的一个产物。 团建的初衷就不是给你吃喝玩乐的,而是借吃喝玩乐之名,行画饼PUA之实。二、我团建的经历 刚工作时候,不懂这个那个的,一腔热血,一片赤子之心,反正就是小...
每天刷100道题:
团建本质还是换个地方上班罢了
团建是“福利”还是是 “...
点赞
评论
收藏
分享
12-04 15:23
三峡大学 FPGA工程师
Boss直聘是不是招聘软件啊
找个实习,找了3个月,没人理我
不知道怎么取名字_:
玩游戏都写到简历上了啊
投递BOSS直聘等公司6个岗位
点赞
评论
收藏
分享
11-11 21:08
门头沟学院 Java
27届双非想要寒假实习,求各位牛油指点简历
想要寒假实习,目前八股背了三分之一,但是感觉背过去真的很容易忘记,各位佬对于简历和八股有什么建议?小的跪谢
投递实习岗位前的准备
点赞
评论
收藏
分享
12-22 15:15
科大讯飞_语言算法工程师(准入职员工)
科大讯飞内推,科大讯飞内推码
✨入职感受 ①公司环境很好 我在讯飞小镇办公,园区外部环境、就餐环境、办公环境都不很不错,园区内还有卡旺卡、瑞幸、罗森、药房、轻食店等,购物方便 ②福利待遇也不错 工资2多,每个月有200餐补,可以申请免费宿舍,打车可以用内部ai拼(乘客免费,司机有补贴) ③饭不太好吃 中午吃的排骨麻辣香锅,味道有点一般,排骨有点腥,炸猪皮个人感觉有点腻,吃了一点实在吃不下了 ④工作氛围比较轻松 带我的两个姐姐都很好,说话很温柔,其中一个只比我大一点点,相处起来很轻松,主动带我吃饭、跟我介绍园区,还请我喝了东西 ⑤通勤有点麻烦 学校离讯飞小镇太远了,班车在学校南门,我宿舍在西门,坐班车不方便。而且班车7点多出...
科大讯飞公司氛围 477人发布
点赞
评论
收藏
分享
评论
点赞成功,聊一聊 >
点赞
收藏
分享
评论
提到的真题
返回内容
全站热榜
更多
1
...
工作半年后更确定:我们依然不欠优绩主义什么
6104
2
...
我建了一个分享实习业务的仓库,欢迎大家贡献哦
3792
3
...
牛客2025年终报告重磅上线——揭晓你的年度修炼成就!
3160
4
...
#牛客2025仙途报告#居然是五颗星
2528
5
...
腾讯 微信支付一面面经
2517
6
...
【2025-年终总结】25届毕业生果果牛这一年~
2184
7
...
牛客年终报告,今日道爷我成了
1964
8
...
一个程序员的自救书|从酒吧陪玩DM到上岸大厂
1918
9
...
在当下这个社会,在人生这个无常的时代,我真心希望你和各位牛友开心
1418
10
...
壕壕壕,京东发7个月年终,此生要做东孝子
1316
创作者周榜
更多
正在热议
更多
#
牛客2025仙途报告
#
13288次浏览
246人参与
#
实习要如何选择和准备?
#
129941次浏览
1501人参与
#
2025年终总结
#
195837次浏览
3283人参与
#
你有哪些缓解焦虑的方法?
#
44528次浏览
868人参与
#
元旦假期你打算怎么过
#
830次浏览
22人参与
#
上班后和你想的一样吗?
#
95129次浏览
701人参与
#
双非本科的出路是什么?
#
189250次浏览
1500人参与
#
找工作,行业重要还是岗位重要?
#
87473次浏览
1746人参与
#
今年你最想重开的一场面试是?
#
12485次浏览
132人参与
#
我们是不是被“优绩主义”绑架了?
#
1720次浏览
64人参与
#
一人说一个提前实习的好处
#
23113次浏览
312人参与
#
机械人晒出你的简历
#
148419次浏览
885人参与
#
你面试体验感最差/最好的公司
#
28938次浏览
476人参与
#
vivo工作体验
#
35038次浏览
136人参与
#
牛友们的论文几号送审
#
63103次浏览
833人参与
#
礼物开箱Plog
#
3207次浏览
102人参与
#
秋招落幕,你是He or Be
#
22530次浏览
381人参与
#
没有合适的工作,你会先找个干着,还是考公考研
#
149265次浏览
1241人参与
#
牛油的搬砖plog
#
163667次浏览
1152人参与
#
工作中听到最受打击的一句话
#
12681次浏览
177人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务