假设数据库存在两个日志组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住的。
不知道对不对,请高人指正~
对checkpoint not completed的理解,布布扣,bubuko.com
时间: 2024-10-09 23:58:44