MySQL学习小结
Posted float123
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 引擎特有的
1 和 2。
另外一个原因就是 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
以上是关于MySQL学习小结的主要内容,如果未能解决你的问题,请参考以下文章