checkpoint会触发dbwr写脏块时是根据checkpoint queue来的,而LRU-W是负责dbwr的其他写出条件的触发。
如下的情况下,会触发dbwr进程将脏块写出到disk:
1)当进程扫描LRU链表查找可用buffer(可用被覆盖的 buffer header)的时候,如果已经被扫描的buffer header的数量
超过_db_block_max_scan_pct时(默认是40),会触发dbwr写脏块
2)当DBWR进程在main LRU-W链表上查找已经被更改完成且正在等待被写出到数据文件的buffer header时,
如果这个过程中查找的buffer 数量超过_db_writer_scan_depth_pct(默认25%)时,会触发dbwr进程写脏块
3)当main LRU-W和aux LRU-W 链表上的脏块总数超过 _db_large_dirty_queue时(默认25)会触发dbwr进行写出脏块的动作。