首页 > 代码库 > 对checkpoint not completed的理解

对checkpoint not completed的理解

假设数据库存在两个日志组log1和log2,首先,-->log1-->log2-->log1,此时(log2切换到log1)触发checkpoint,该checkpoint will flush dirty block to datafile,从而触发DBWn书写dirty buffer,等到log1覆盖的dirty block全部被写入datafile后才能使用log1(循环使用),如果DBWn写入过慢,LGWR必须等待DBWn完成,则这时会出现“checkpoint not completed!”


别人的回答是

log1-> log2, trigger checkpoint 1
after log2 is full,
log2-> log1, trigger checkpoint 2
but if checkpoint 1 is still not finished, then LGWR must wait. This is "logfile switch (checkpoint incompleted)" event.


我的理解是

1.检查点完成,才能顺利切换。

2.checkpoint1阻塞了log2->log1的切换。

3.没有可用的redo日志,会阻塞数据正常使用,这时数据库是短暂hang住的。


不知道对不对,请高人指正~