任何人都可以解释为什么Write-Ahead Log使用NO-FORCE?

时间:2016-12-08 05:46:58

标签: database logging wal crash-recovery

在网上搜索时,STEAL和FORCE定义如下

  

FORCE或NO-FORCE:在事务提交之前,是否应将所有事务更新强制转换为磁盘?

此外,我被告知

  

在将所有日志记录写入稳定存储

之前,不会将事务视为已提交

那么WAL与FORCE方法有何不同?我觉得在这两种情况下,当我们提交事务时,必须将更改刷新到磁盘....

1 个答案:

答案 0 :(得分:1)

使用WAL,您可以顺序写入日志。整个数据库中页面的更新可以异步写入日志条目。

强制方法要求将缓冲池中的所有脏页与提交操作同步刷新到磁盘。这是一项更昂贵的操作,并限制了吞吐量。

基本权衡:WAL崩溃后恢复时间更长,强力吞吐量更低。