首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
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-15 15:21
中国科学院大学 算法工程师
华为秋招进展
我朋友的华子2012,HR已经开始问意向地区了,好急
点赞
评论
收藏
分享
11-12 00:18
海南大学 销售客户经理
华为校招求助!
如果面评是B+,还有机会逆袭吗?我在人数通部门的申请,真的能翻盘吗?这让我感到紧张,心里总是挂念着这个问题。希望能有个答案,毕竟每一步都充满了不确定性。大家觉得,我的机会大吗?希望有大神能分享一下!
牛客358530628号:
按照往年的说法,有b+排序肯定很靠后概率小很多,建议签保底吧。别抱太大希望
牛客创作赏金赛
点赞
评论
收藏
分享
09-25 23:20
武警特种警察学院 Web前端
甚至没面试🥲
小谷围鸡肉卷阿姨:
+1,腾子投完一动不动
点赞
评论
收藏
分享
今天 00:56
已编辑
Kim Anh Academy of Beauty (Westminster) 深度学习
bro帮忙选一下
投票
吃不饱的肱二头肌很想退休:
tnnd 我以为选妹子呢,亏我兴高采烈的冲进来😠
点赞
评论
收藏
分享
11-16 00:12
科大讯飞_算法工程师
科大讯飞11月紧缺岗位
球球别举报我了,上一次发了一下 ,不知道谁带头说了个举报,咱们都是收到人资的需求才会在网上发的,真没刷大家kpi啊11月以下岗位缺口还比较大 大家可以再投一下这些,速度快,拿offer几率大,因为这段时间投递人比较少了,之前不符合的都在池子里 研究算法类: AI研究算法工程师-AIGC方向/深度学习框架和平台方向/智能语音方向/自然语言处理方向研发类: Java/ Python/Go开发工程师、前端开发工程师、移动端开发工程师-Android/iOSAI研发类:AI研发工程师测试类:测试开发工程师大数据类:大数据工程师营销类:客户/市场/渠道/零售经理 飞凡计划会把普通计划的流...
投递科大讯飞等公司10个岗位 >
点赞
评论
收藏
分享
点赞成功,聊一聊 >
点赞
收藏
评论
分享
回复帖子
提到的真题
返回内容
全站热榜
1
...
数字马力秋招迷惑点
2.9W
2
...
二本学院非科班天崩开局,如何逆天改命拿下大厂后端
2.1W
3
...
🧧央国企笔面经全网征集丨第二期丨11.5-12.5
1.6W
4
...
我的人生步伐是不是有点快
1.0W
5
...
我与阿里
9758
6
...
秋招终于到此结束
7447
7
...
11.19校招&实习招聘信息汇总
5289
8
...
已经十一月下旬了,还有0offer的人吗
4012
9
...
瑞幸咖啡Java一面+二面
3895
10
...
满帮什么时候开奖
3739
正在热议
#
晒一晒我的offer
#
9626795次浏览
104373人参与
#
双非能在秋招上岸吗?
#
74389次浏览
640人参与
#
百度开奖
#
67576次浏览
461人参与
#
签约/解约注意事项
#
323302次浏览
1997人参与
#
实习,投递多份简历没人回复怎么办
#
2361980次浏览
33912人参与
#
应届生被毁约被毁意向了怎么办
#
11910次浏览
131人参与
#
北方华创开奖
#
13799次浏览
133人参与
#
硬件/芯片公司工作体验
#
43813次浏览
478人参与
#
来聊聊机械薪资天花板是哪家
#
60410次浏览
406人参与
#
00后45度躺现状
#
15137次浏览
214人参与
#
你觉得专业和学校哪个对薪资影响最大
#
24697次浏览
186人参与
#
你觉得哪一届的校招最难?
#
43594次浏览
332人参与
#
简历被挂麻了,求建议
#
2451183次浏览
32835人参与
#
游戏求职进展汇总
#
46159次浏览
308人参与
#
投递实习岗位前的准备
#
1162830次浏览
18100人参与
#
你今年的平均薪资是多少?
#
62898次浏览
302人参与
#
大家都开始春招面试了吗
#
404369次浏览
5183人参与
#
联影求职进展汇总
#
17918次浏览
168人参与
#
如果再来一次,你还会选择这个工作吗?
#
61751次浏览
712人参与
#
那些拿到大厂offer的简历长啥样
#
118245次浏览
2150人参与
#
在国企工作的人,躺平了吗?
#
281700次浏览
3663人参与
#
滴滴求职进展汇总
#
74398次浏览
663人参与
牛客网
牛客企业服务