百分百源码网-让建站变得如此简单! 登录 注册 签到领金币!

主页 | 如何升级VIP | TAG标签

当前位置: 主页>网站教程>数据库> SQL在MySQL数据库中是怎样施行的
分享文章到:

SQL在MySQL数据库中是怎样施行的

发布时间:12/01 来源:未知 浏览: 关键词:
今天一起看看一条更新语句又是怎么一个施行流程。

今天和mysql视频教程栏目一起看看一条更新语句又是怎么一个施行流程。

我们可以看到最后的时候,写redolog的时候分了两步,prepare和commit,这就是我们常说的“两阶段提交”。

为何日志需要“两阶段提交”?

因为redo log和binlog离别是存储引擎和施行器的日志,是两个独立的逻辑,要是不消两阶段提交,不管先提交哪个后提交哪个都会存在一些题目。我们这里也借助上边的例子看一下,假如目前ID=2的这一行值为0 ,在update的历程中写完了首先个日志后,第二个日志还没写期间产生了crash,会怎么样?

  • 先写redolog后写binlog。假如redolog写完,binlog还没写完,MySQL进程异样重新启动了。我们晓得,redolog写完今后,系统即便解体了,也可以将数据恢复,所以在MySQL重新启动后,这一行回被恢复成1。因为binlog没写完就crash,这时候binlog里面是没有这个语句的,因而之后备份日志的的时候,存起来的binlog日志也没有这一条语句。当我们需要通过binlog来恢复数据的时候,因为binlog遗失了这条语句,恢复出来的这一行的值就是0,与原库的值不同啦。
  • 先写binlog后写redo log。要是写完buglog之后,redo log还没写完的时候产生 crash,要是这个时候数据库奔溃了,恢复今后这个事务无效,所以这一行的值还是0,但是binlog里已经记录了这条更新语句的日志,在今后需要用binlog来恢复数据的时候,就会多了一个事务出来,施行这条更新语句,将值从0更新成1,与原库中的0就不一样了。

我们可以看到要是不运用“两阶段提交",那么数据库的状态就会和用日志恢复出来的库纷歧致。虽然平时用日志恢复数据的概率比拼低,但是用日志最多的还是扩容的时候,用全量备份和binlog来实现的,这个时候就可能致使线上的主从数据库纷歧致的状况。

相干免费学习举荐:mysql视频教程

以上就是SQL在MySQL数据库中是怎样施行的的细致内容,更多请关注 百分百源码网 其它相干文章!

打赏

打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

百分百源码网 建议打赏1~10元,土豪随意,感谢您的阅读!

共有153人阅读,期待你的评论!发表评论
昵称: 网址: 验证码: 点击我更换图片
最新评论

本文标签

广告赞助

能出一分力是一分吧!

订阅获得更多模板

本文标签

广告赞助

订阅获得更多模板