什么是WAL机制?
什么是WAL机制?
提示
题眼: 顺序写和随机写的效率问题。
WAL 的全称是 Write-Ahead Logging,它的关键点就是先写日志,再写磁盘。具体来说,当有一条记录需要更新的时候,InnoDB 引擎就会先把记录写到 redo log里面,并更新内存,这个时候更新就算完成了。同时,InnoDB 引擎会在适当的时候,将这个操作记录更新到磁盘里面,而这个更新往往是在系统比较空闲的时候做。
重要
参考答案:
WAL本质上就是把随机读写变成顺序读写进而提高效率。举个例子,我们要写两条数据到表里,一条在磁盘A位置,另一条在磁盘B,那么当我们写完第一条,还需要再花点时间去找B的位置,然后才能写入。如果写入的数据量特别大的话,会有大量的时间浪费在寻址的操作上,这显然不太好。WAL的机制就专门解决这个问题,它本身也是磁盘上的一块连续的地址,每次写数据的时候都会顺序的在这块空间里顺序写入,这样就不需要频繁的寻址了。
在MySQL的InnoDB里,当我们写入一条数据的时候,它会先把记录写入到RedoLog里,然后更新下内存,这个时候就算操作完成了。这个时候,日志里有记录,内存里有记录,但是磁盘可能还没数据。后续只需要在服务器空闲的时间,把数据刷回到磁盘里就行了。 (刷脏页)
