获赞
578
粉丝
30
关注
3
看过 TA
288
西安理工大学
2019
C++
IP属地:上海
米哈游内推相关问题可以私聊哦~
私信
关注
首先,需要明确 MySQL 中这两种 log 存放的是什么数据。binlog 是 MySQL 自己的日志,它里面存放的是二进制格式的 SQL 语句 或 变化的每行 SQL 信息。(具体要看 binlog_format 是 STATEMENT 还是 ROW)为了简化讨论,就把它当作存放了一堆 SQL 的二进制文件。redo log 是 InnoDB 的日志,InnoDB 是 MySQL 的一种可选引擎。redo log 里面存放的是对 InnoDB 数据页面的「修改动作」,可以抽象成把某个字节从 X 改成 Y。由于它只记录操作,所以 redo log 并不清楚这些操作在逻辑上对应什么。(数据页面也简单解释下,可以想象成把表里的数据,一行接一行的排列到一个大的文件中。修改数据页面的动作,实际上就是在修改行内的数据。)基本概念对齐以后,我们来考虑没有 redo log 会怎么样。我们要知道 binlog 和 磁盘上的数据页 从物理上没办法保证同时写入完成,总归会有先后。那么我们写入 binlog 后,数据页面刷到一半,机器断电了,我们如何把数据页从茫茫字节中,恢复到之前的内容呢?(这里还涉及一个 doublewrite buffer 的概念,但为了聚焦问题,先假设一次性刷写能完整刷写一个页面)可以简单认为,MySQL 决定一个事务是否成功提交,取决于 binlog。假设 binlog 是完整的,存储引擎无论如何都得把这条 binlog 对应的记录还原回来,否则事务就丢失了。同时 MySQL 主备复制也是依赖 binlog,也就是 binlog 具有 “一票否决权”。而 redo log 是 InnoDB 指导自己如何恢复数据的。从我的表述来看,redo log 和 binlog 必须保证一致。要么都有,要么都没有。这点从物理上无法保证,但是从逻辑上可以。redo log 先写入本次操作,并记录 “type” 为 prepare;这时写入 binlog,再写入一条 redo log commit 记录。假设1:只有 redo log prepare,没有 binlog。说明事务没有提交,我需要根据 redo log prepare 的操作指导,保证数据页的正确性。假设2:有 binlog,没有 redo log commit。说明事务是正确提交的,只是 redo commit 没来得及写入,我需要根据 redo log prepare 的操作指导,进行页面数据恢复。其实,当你觉得一个东西不需要的时候,想象一下把它去掉,这个系统是否可以保证正确。
0 点赞 评论 收藏
分享
0 点赞 评论 收藏
分享
0 点赞 评论 收藏
分享
0 点赞 评论 收藏
分享
大学毕业以后很少用牛客了,当年和各位一样,天天抱着牛客刷题、找面经、求内推、吐槽面试经历……工作也有些年头了,兜兜转转换过几家公司,大大小小面试经历上百场是有的,拿到大大小小 offer 也不计其数。分享一点自己的经验,希望能帮助到各位。1. 失败是大概率事件,记得放平心态最近看到很多「投了很多公司都没回信」「简历投了被秒拒」「面试到最后一轮还是挂了」……诸如此类的动态。个人的经验是,找工作失败十有八九。•岗位已经招够了,但忘记下掉,投就是秒挂。(相信我,HR 也不爱上班)不代表你水平不行。•面试官手上有好几个选择,凭感觉选了一个,剩下的全都挂掉,不代表你水平不行。•岗位要求某项技能,但你简历里没有体现,不管你会不会,为了快速筛选只能把你挂掉,不代表你水平不行。……我被拒掉的次数,比拿到 offer 的数量多得多,这很正常。「你并不弱于人,offer 永远在下一家」不这样想的话,很容易就被不断到来的拒绝邮件击溃。2. 如果觉得自己面试技巧很烂,那广撒网试试面试是有技巧的,如何让面试官快速捕捉到你的能力,如何组织语言把你的思路提供给对方,都是需要训练的。最简单的训练方法,就是广撒网,在实战中训练。不管这家公司你最终会不会去,投就完事了。有面试机会权当练习也无妨,既能巩固背的八股文,又能锻炼表达能力;最重要的是,还不花钱。我这辈子都不会去的一家公司,就是某为。即使知道自己肯定不会去,但我还是参与了整个面试过程。(甚至拿到过 offer)3. 面试的一些现实了解一个人是非常困难的,通过短短几十分钟的面试了解一个人,就更是难上加难。所以,面试存在很多「眼缘」。你和面试官能不能聊得来,面试官感受如何,这些都会影响面试结果。有时候明明答得不错,结果还是过不了,很有可能是「运气」没到。所以没必要纠结已经失败的面试,积极准备后面的机会。总得来说:流畅的沟通,礼貌的对话,保持真诚,很重要。遇到过一些校招生,面试确实不太礼貌。面试官和你无冤无仇,基本的尊重还是要给到的。讲话要真诚且坚定,撒谎欺骗什么的,只能说连进入社会的基本资格都不具备。4. 关于内推对于大公司来说,内推与否确实很难讲是不是有用;小公司内推作用可能会大一点。大厂内推现在唯一不同,顶多是内推的人帮你查一查进度什么的,并不会让你有其他优势。所以不用迷信内推,不如专注于自己的简历和经历,提升水平。5. 关于 AI老实说,我现在写代码也会用 copilot。遇到问题,用 Google / ChatGPT 基本 half half。但如果笔试、面试 明确严禁 AI 辅助,我建议还是老实一点。一方面是提升自己的真实水平很重要,另一方面是被抓到,后果可能会很严重。越来越多企业加入诚信联盟,这种面试作弊的行为,会不会被企业拉入黑名单,很难讲。多一事不如少一事,打铁还需自身硬。其它的暂时还没想到,想到以后再聊吧……祝各位秋招顺利,找到心仪的工作。
0 点赞 评论 收藏
分享
0 点赞 评论 收藏
分享

创作者周榜

更多
关注他的用户也关注了:
牛客网
牛客网在线编程
牛客网题解
牛客企业服务