zoukankan      html  css  js  c++  java
  • MySQL学习(九)小结

    redo-log 和 bin-log 是如何联系起来的?

    update 语句在更新的时候先更新内存后,写 redo-log 然后 bin-log ,其中后面一步是使用了两阶段提交, 也就是每一个更新都会写 bin-log ,要是发生异常崩溃的时候,

    回答:它们有一个共同的数据字段,叫XID。崩溃恢复的时候,会按顺序扫描redo log:

    • 如果碰到既有prepare、又有commit的redo log,就直接提交;
    • 如果碰到只有parepare、而没有commit的redo log,就拿着XID去binlog找对应的事务。

    redo log 和 bin log

    ### redo log 记录的是数据的物理变化,就是某个数据行从 X1 变到 X2 的过程。 

    ### bin log 记录的是数据的逻辑逻辑变化,可以类比于就是执行像SQL一样的逻辑。

    为什么 MySQL 已经有了 bin-log 还需要 redo-log ,是不是多此一举?

    一个原因是历史原因,InnoDB 引擎是以插件的形式的加入到 MySQL ,而且 bin log 是属于 server 层的,其他引擎也都可以使用,但是 redo-log 则是 InnoDB 引擎特有的
    12。 另外一个原因就是 redo-log 主要的功能是事务持久化支持崩溃恢复,而bin log 只能作数据归档,那你肯定会说为bin log 增加崩溃恢复的功能就行了嘛,是的,那样就会重新设计出一个 redo log 出来,于是 redo log 变得不可取代。

    参考资料

    • http://scholar.hedasudi.com/ (谷歌搜索)
    • https://cloud.tencent.com/developer/article/1417482 (redo log)
    • https://www.one-tab.com/page/86HwR8klRGaOmeH3vUkdCw
  • 相关阅读:
    Linux学习 -- Shell编程 -- 字符截取命令
    Linux学习 -- Shell编程 -- 正则表达式
    Linux学习 -- Shell基础 -- Bash变量
    Linux学习 -- Shell基础 -- Bash基本功能
    Linux学习 -- Shell基础 -- 概述
    Linux学习 -- 备份与恢复
    Linux学习 -- 启动管理
    Linux学习 -- 日志管理
    chapter9_3 协同程序实现迭代器
    chapter9_2 管道与过滤器
  • 原文地址:https://www.cnblogs.com/Benjious/p/12341164.html
Copyright © 2011-2022 走看看