很重要一点,redo log是什么时刻写盘的?前面说了是在事物开端之后慢慢写盘的。
对应的物理文件:
之所以说重做日记是在事务开端之后慢慢写入重做日记文件,而不必定是事务提交才写入重做日记缓存,原因就是,重做日记有一个缓存区Innodb_log_buffer,Innodb_log_buffer的默认大年夜小为8M(这里设置的16M),Innodb存储引擎先将重做日记写入innodb_log_buffer中。
然后会经由过程以下三种方法将innodb日记缓冲区的日记刷新稻磁逄
-
Master Thread 每秒一次履行刷新Innodb_log_buffer到重做日记文件。
-
每个事务提交时会将重做日记刷新到重做日记文件。
-
当重做日记缓存可用空间 少于一半时,重做日记缓存被刷新到重做日记文件
由此可以看出,重做日记经由过程不止一种方法写入稻磁逄,尤其是对于第一种方法,Innodb_log_buffer到重做日记文件是Master Thread线程的准时义务。
是以重做日记的写盘,并不必定是跟着事务的提交才写入重做日记文件的,而是跟着事务的开端,慢慢开端的。
即使某个事务还没有提交,Innodb存储引擎仍然每秒会将重做日记缓存刷新到重做日记文件。
这一点是必须要知道的,因为这可以很好地解释再大年夜的事务的提交(commit)的时光也是很短暂的。
回滚日记(undo log)
感化:
保存了事务产生之前的数据的一个版本,可以用于回滚,同时可以供给多版本并发控制下的读(MVCC),也即非锁决定肯定
内容:
逻辑格局的日记,在履行undo的时刻,仅仅是将数据大年夜逻辑上恢复至事务之前的状况,而不是大年夜物理页面上操作实现的,这一点是不合于redo log的。
推荐阅读 在以前几年间,向下一代端点安然移动的趋势已经进一步加快,究其原因很简单:收集安然专业人员对现有的防病毒软件的功能并不知足。这种市场需求大年夜大年夜推动了诸如Carbon Black、CrowdStrike、Cyb>>>详细阅读 本文标题:MySQL中的重做日志,回滚日志以及二进制日志的简单总结 地址:http://www.17bianji.com/lsqh/40624.html 1/2 1