什么是 redo log?有什么用?

redo log,也被称为重做日志,是MySQL数据库中InnoDB存储引擎的一个重要概念。

在数据库中,为了提高性能,数据在更新的时候并不是直接更新在磁盘上,而是先更新在内存中,然后通过后台的方式慢慢刷(flush)到磁盘。但是这种方式存在一个问题,那就是如果数据库在数据还没有刷到磁盘的时候发生了崩溃,那么这部分数据就会丢失。

这时,就需要使用到redo log。当数据更新的时候,InnoDB引擎会先把记录写到redo log中,并更新内存,这个时候更新就算完成了。InnoDB引擎会在适当的时候,将这个操作记录更新到磁盘中。并且,redo log是循环写的,当写到末尾时,又会从头开始写。

这样做的好处是,即使数据库发生崩溃,只要redo log还在,就可以通过redo log把数据恢复到最新的状态。因此,redo log主要是用来保证事务的持久性(Durability)。

需要注意的是,redo log是InnoDB存储引擎特有的,其他存储引擎不一定有类似的机制。

发表评论

后才能评论