28 【面试官:redo log怎么刷入磁盘的知道吗? - 后端研发工程师哈哈 | 小红书 - 你的生活指南】 😆 kDNvT4LF4iMMDw5 😆 http://xhslink.com/lt3O6R
redo log 的写入不是直接落到磁盘,而是在内存中设置了一片称之为 redo log buffer 的连续内存空间,也就是redo 日志缓冲区。
在如下的一些情况中,log buffer 的数据会刷入磁盘
log buffer 的大小是有限的,如果不停的往这个有限大小的 log buffer 里塞入日志,很快它就会被填满。如果当前写入 log buffer 的 redo 日志量已经占满了 log buffer 总容量的大约一半左右,就需要把这些日志刷新到磁盘上。
在事务提交时,为了保证持久性,会把 log buffer 中的日志全部刷到磁盘。注意,这时候,除了本事务的,可能还会刷入其他事务的日志。
有一个后台线程,大约每秒都会刷新一次 log buffer 中的 redo log 到磁盘。