作家
登录

MySQL中的重做日志,回滚日志以及二进制日志的简单总结

作者: 来源: 2018-03-12 17:58:50 阅读 我要评论

很重要一点,redo log是什么时刻写盘的?前面说了是在事物开端之后慢慢写盘的。

对应的物理文件:

之所以说重做日记是在事务开端之后慢慢写入重做日记文件,而不必定是事务提交才写入重做日记缓存,原因就是,重做日记有一个缓存区Innodb_log_buffer,Innodb_log_buffer的默认大年夜小为8M(这里设置的16M),Innodb存储引擎先将重做日记写入innodb_log_buffer中。

然后会经由过程以下三种方法将innodb日记缓冲区的日记刷新稻磁逄

  1. Master Thread 每秒一次履行刷新Innodb_log_buffer到重做日记文件。

  2. 每个事务提交时会将重做日记刷新到重做日记文件。

  3. 当重做日记缓存可用空间 少于一半时,重做日记缓存被刷新到重做日记文件

由此可以看出,重做日记经由过程不止一种方法写入稻磁逄,尤其是对于第一种方法,Innodb_log_buffer到重做日记文件是Master Thread线程的准时义务。

是以重做日记的写盘,并不必定是跟着事务的提交才写入重做日记文件的,而是跟着事务的开端,慢慢开端的。

即使某个事务还没有提交,Innodb存储引擎仍然每秒会将重做日记缓存刷新到重做日记文件。

这一点是必须要知道的,因为这可以很好地解释再大年夜的事务的提交(commit)的时光也是很短暂的。

回滚日记(undo log)

感化:

保存了事务产生之前的数据的一个版本,可以用于回滚,同时可以供给多版本并发控制下的读(MVCC),也即非锁决定肯定

内容:

逻辑格局的日记,在履行undo的时刻,仅仅是将数据大年夜逻辑上恢复至事务之前的状况,而不是大年夜物理页面上操作实现的,这一点是不合于redo log的。


  推荐阅读

  端点安全7大“必备”功能

在以前几年间,向下一代端点安然移动的趋势已经进一步加快,究其原因很简单:收集安然专业人员对现有的防病毒软件的功能并不知足。这种市场需求大年夜大年夜推动了诸如Carbon Black、CrowdStrike、Cyb>>>详细阅读


本文标题:MySQL中的重做日志,回滚日志以及二进制日志的简单总结

地址:http://www.17bianji.com/lsqh/40624.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)