首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
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
全部评论
推荐
最新
楼层
暂无评论,快来抢首评~
相关推荐
11-25 16:04
贵州师范大学 嵌入式软件开发
[求求了]各位大佬狠狠的批斗吧(欢迎点评),双非本太难了
点赞
评论
收藏
分享
11-26 11:46
360集团_运维开发工程师(准入职员工)
360集团内推,360集团内推码
360真的超好,也碰到了很好的mentor,小组氛围巨好。实习期间完整的做了两个项目,感谢mentor的信任,愿意把一些实打实的内容让我做,完全没有做一些dirty work,可以说是充实的过了三个月,感觉抵得上在学校一年,后悔没有早点来这里。360对实习生真的巨好,不管是mentor还是能给到的资源,感觉在大厂中也是少见的,我为360打call!!! 在360这样的企业里,管理上非常的扁平化,没有严苛的上下级关系,这一点就非常让人舒服。 同时公司也会给员工很多成长和锻炼的机会,比如说定期的各类型专业知识的培训啊,还有很多接触大项目的机会。只要你肯学习和努力,就一定会有收获。 同事之间的关系也...
360集团公司氛围 407人发布
点赞
评论
收藏
分享
10-19 14:15
兰州大学 Java
28Java简历求拷打
_Philia093:
蓝桥杯省三删掉
点赞
评论
收藏
分享
11-17 23:00
南昌大学 Java
0元实习这一块
还有高手
这个名称和你无缘:
10元一天 0元提成😂
点赞
评论
收藏
分享
昨天 17:49
西南交通大学 交易师
那场面试,我和面试官都哭了
2025年3月,上海春雨绵绵。我坐在XX科技(当时行业TOP3,此处打码)17楼的会议室,等待第三轮面试。前两面都很顺利,但这一场——直面产品副总裁,我毫无把握。副总裁进来时,我愣了一下。她眼睛红肿,明显刚哭过。这在以“铁血”著称的她身上,几乎不可能发生。“抱歉,刚处理完一个突发状况。”她迅速恢复冷静,“我们开始吧。”问答到一半,她突然问:“你在YY项目里提到处理过重大客诉,具体是什么情况?”我深吸一口气:“那是去年7月,我们刚上线新功能就出现Bug,导致一位大客户的整个营销活动瘫痪。”我详细还原了那个不眠夜——如何顶住压力说服技术总监紧急修复,如何连夜飞到客户城市当面道歉,如何在凌晨三点的酒...
点赞
评论
收藏
分享
评论
点赞成功,聊一聊 >
点赞
收藏
分享
评论
提到的真题
返回内容
全站热榜
更多
1
...
个人秋招总结,两段转正失败,给27届+的建议
1.4W
2
...
关于秋招躲offer这件事,最终。。。
3148
3
...
【现金奖励】26秋招薪资爆料征集,瓜分现金红包!
2982
4
...
最后一年应该干些什么呢,躺平吗
2817
5
...
来个oc暖我一整天
2249
6
...
小红书vs字节vs京东 offer选择
1953
7
...
后端项目大统计,看看你上榜没有
1843
8
...
原来我双非一本都不是,我是二本!
1808
9
...
双9找不到实习怎么办
1772
10
...
秋招面经总结
1702
创作者周榜
更多
正在热议
更多
#
你的秋招白月光和意难平公司
#
20444次浏览
194人参与
#
应届生进小公司有什么影响吗
#
101666次浏览
1085人参与
#
百度秋招
#
57897次浏览
396人参与
#
你想跟着什么样领导?
#
13350次浏览
144人参与
#
米哈游求职进展汇总
#
487772次浏览
2841人参与
#
从夯到拉,评价编程语言
#
11596次浏览
98人参与
#
中兴求职进展汇总
#
731076次浏览
3118人参与
#
巨人网络工作体验
#
68905次浏览
499人参与
#
什么样的背景能拿SSP?
#
120023次浏览
421人参与
#
毕业季,你想好怎么跟生活对线了吗?
#
257738次浏览
3842人参与
#
找实习是选平台还是选业务?
#
15739次浏览
186人参与
#
长鑫存储求职进展汇总
#
48389次浏览
234人参与
#
深信服求职进展汇总
#
237829次浏览
1800人参与
#
十一月总结
#
23950次浏览
236人参与
#
职场上哪些事情令人讨厌
#
27770次浏览
111人参与
#
硬件人秋招进展
#
251103次浏览
3939人参与
#
影石Insta360求职进展汇总
#
163400次浏览
1331人参与
#
机械人还在等华为开奖吗?
#
281900次浏览
1442人参与
#
哪一瞬间让你觉得工作好累
#
16151次浏览
189人参与
#
大厂面试初体验
#
80390次浏览
365人参与
#
xxx岗位的一天
#
15795次浏览
141人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务