首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
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
全部评论
推荐
最新
楼层
暂无评论,快来抢首评~
相关推荐
08-18 19:37
联想_后端开发部_语音算法工程师(准入职员工)
联想内推,联想内推码
供应链管理面经1. 你如何理解 "供应链管理" 的核心目标?举一个简单的供应链例子。 ◦ 追问1:供应链的 "三流" 指什么? ◦ 追问2:如何提升供应链响应速度? 2. 请描述一次你参与的物流或库存管理项目,有什么收获? 3. 解释你理解的 "供应商管理",如何选择和评估供应商? ◦ 追问1:供应商评估的指标有哪些? ◦ 追问2:如何建立供应商合作关系? 4. 你认为供应链管理中最常见的挑战是什么?如何应对? 5. 作为供应链管理专员,你认为需要具备哪些核心能力?如何培养? ◦ 追问1:如何学习供应链知识? ◦ 追问2:如何提升系统...
点赞
评论
收藏
分享
昨天 00:36
门头沟学院 Java
27届普本找日常实习投递记录
找日常实习就是挂挂挂,现在8月底了,不知道日常会不会多一些,简历这一关还是很难过的,我是普本加一段实习,约面的都是boss投递的,官网简历都过不去,希望在9月份之前能有一次大厂的面试还是有些许破防的,跟自己想的完全不一样#校园里的破防时刻#
点赞
评论
收藏
分享
07-20 00:28
南京大学 Java
java简历求拷打,无实习经历
去年9月开始学java,没时间刷算法题了,打算先投个日常实习
siestaaaaa...:
双一流不用写,有985写985,有211写211
投了多少份简历才上岸
点赞
评论
收藏
分享
08-13 15:16
已编辑
字节跳动_后端开发(实习员工)
mac m4
这辈子用的最好的电脑是字节给的
我只是一个小白菜:
我还用不惯m4
,也是山猪吃不了细糠了
投递字节跳动等公司10个岗位
点赞
评论
收藏
分享
08-19 15:37
合肥工业大学宣城校区 前端工程师
26前端校招 腾讯wxg 3面 面经
时长 1h,双机位开局3个算法,30mins循环递增的数组找最小值,时间最优二叉树的深度合并有序链表自我介绍开始拷打进程中的内存是怎么分布的进程和线程的区别进程间的通信手段二进制如何上传给服务端String() 和 toString() 底层是如何实现的如何实现客户端与服务端的长连接URL 有长度限制吗如何优化网页加载讲讲 base64gbk 和 utf-8 的区别个人优势和劣势团队前端开发流程反问
查看16道真题和解析
点赞
评论
收藏
分享
评论
点赞成功,聊一聊 >
点赞
收藏
分享
评论
提到的真题
返回内容
全站热榜
更多
1
...
ES(Elasticsearch)面试常见八股整理
5.9W
2
...
字节后端三面
2.1W
3
...
腾讯后端面经
1.3W
4
...
27双非,不靠包装邪修拿下美团实习
9687
5
...
影石嵌入式一面
8029
6
...
出生滑伪all in到最后一无所有😡
7427
7
...
美团后端一面
5063
8
...
美团一面
3652
9
...
老婆怕我跑,给我买了这么多礼物
3607
10
...
美团秋招Java一面
3536
创作者周榜
更多
正在热议
更多
#
秋招投递记录
#
93895次浏览
1072人参与
#
机械人还在等华为开奖吗?
#
235752次浏览
1180人参与
#
七夕节你打算怎么过?
#
3025次浏览
60人参与
#
掌阅科技工作体验
#
8187次浏览
36人参与
#
实习教会我的事
#
1303次浏览
10人参与
#
拼多多工作体验
#
32252次浏览
221人参与
#
哪些公司真双非友好?
#
19487次浏览
94人参与
#
机械/制造每日一题
#
60651次浏览
953人参与
#
现在还是0offer,延毕还是备考
#
1097686次浏览
7609人参与
#
远景求职进展汇总
#
57059次浏览
309人参与
#
互联网行业现在还值得去吗
#
25784次浏览
150人参与
#
秋招拿一个offer可以躺平吗
#
153605次浏览
1040人参与
#
25届如何提前做秋招准备?
#
180191次浏览
2502人参与
#
当下环境,你会继续卷互联网,还是看其他行业机会
#
126553次浏览
850人参与
#
神州信息工作体验
#
20296次浏览
126人参与
#
你喜欢工作还是上学
#
62759次浏览
733人参与
#
芯原求职进展汇总
#
16650次浏览
73人参与
#
招聘要求与实际实习内容不符怎么办
#
120582次浏览
802人参与
#
你觉得专业和学校哪个对薪资影响最大
#
69705次浏览
523人参与
#
如何看待offer收割机的行为
#
840217次浏览
6135人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务