DBMS管理数据库缓冲区有四种策略:No Steal, Steal, No Force, Force。 为保证数据库系统故障能够有效地恢复,提出了三种类型的日志:Undo型日志、Redo型日志和Undo/Redo结合型日志。不同策略可以采用不同的日志予以恢复
具体方案如下:
总的来说就是:
force+no steal是最好的情况,不会出现问题
force+steal steal会出现问题,steal问题就是会在cmmit前进行读写,这样的话,出错需要undo
no force+no steal no force会出现在commit之后进行读写的操作,这样,需要redo
no force+steal 两个都会出现问题 所以需要使用redo+undo结合性日志
补充:
undo日志会保留旧值 先把数据写回磁盘output 再将commit写入日志
redo日志会保留新值 先把commit记录写入日志,然后将数据写回磁盘output