自导自演的面试现场之--你竟然不了解MySQL的组提交?

下文还是白日梦以自导自演的方式,围绕“组提交”展开本话题。看看你能抗到第几问吧

换一种写作风格,自导自演面试现场!感觉这样还是比较有趣的,欢迎大家订阅我的MySQL专题,公众号首发!持续更新中~

点击阅读原文,格式会好看一点哦~

点击阅读原文,格式会好看一点哦~

点击阅读原文,格式会好看一点哦~

公众号后台回复:数据库 可以参与抽奖活动,3本《MySQL技术内幕-InnoDB存储引擎》

欢迎关注白日梦,公众号首发!持续连载中


自导自演的面试现场之--你竟然不了解MySQL的组提交?


库尼奇瓦

自导自演的面试现场之--你竟然不了解MySQL的组提交?

,同学,听说你上一面表现的还可以,这一面要不咱继续?

自导自演的面试现场之--你竟然不了解MySQL的组提交?


嗯,好啊!

自导自演的面试现场之--你竟然不了解MySQL的组提交?


自导自演的面试现场之--你竟然不了解MySQL的组提交?


自导自演的面试现场之--你竟然不了解MySQL的组提交?


好,你了解MySQL的两阶段提交不?说说看

自导自演的面试现场之--你竟然不了解MySQL的组提交?



嗯,了解。

自导自演的面试现场之--你竟然不了解MySQL的组提交?

 简单来说两阶段提交就是将事务提交分成两部分,经过这两步处理后,我们称这个事务被提交了。


自导自演的面试现场之--你竟然不了解MySQL的组提交?


自导自演的面试现场之--你竟然不了解MySQL的组提交?


嗯,那两个阶段呢?你说说看!

自导自演的面试现场之--你竟然不了解MySQL的组提交?


可以看下面这张图:我们当执行commit命令时,会按照如下进行。


第一阶段:写redo log,并标识上prepare。

-- 中间穿插写binlog --

第二阶段:写redo log,完成事务的最终提交。

自导自演的面试现场之--你竟然不了解MySQL的组提交?


自导自演的面试现场之--你竟然不了解MySQL的组提交?


自导自演的面试现场之--你竟然不了解MySQL的组提交?


嗯,那你知不知道为什么事务的提交要分成两个阶段?

自导自演的面试现场之--你竟然不了解MySQL的组提交?


嗯,你看上图中的两阶段是redolog-prepare、redolog-commit这两个阶段,然后在这两个阶段中又写了binlog。

自导自演的面试现场之--你竟然不了解MySQL的组提交?


这个redolog主要提供的能力是对事务进行rollback、并且redolog是存储引擎层面记录的日志。

自导自演的面试现场之--你竟然不了解MySQL的组提交?


而binlog的作用是方面我们进行数据的备份以及MySQL集群主从之间的数据同步使用,并且binlog是MySQL上层,也就是Server层面记录的日志。

自导自演的面试现场之--你竟然不了解MySQL的组提交?


综上:MySQL的两阶段提交是为了保证redolog、binlog两者在逻辑上的一致性。才能进一步保证。事务的回滚、数据备份、已经MySQL集群之间的数据才是安全可靠的


自导自演的面试现场之--你竟然不了解MySQL的组提交?


自导自演的面试现场之--你竟然不了解MySQL的组提交?


嗯,那你能不能举个例子,更直观的告诉我,redolog、binlog两者在逻辑一致的必要性以及用途?

自导自演的面试现场之--你竟然不了解MySQL的组提交?


嗯,好啊!

自导自演的面试现场之--你竟然不了解MySQL的组提交?

,比如这个例子:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wppjfy.html