DB BUFFER LRU 列表的latch等待
总结出来如下两种情况会导致latch等待:
1. 载入内存,写入LRU列表
进程欲读取还没有装载到内存上的块时,通过查询LRU 列分配到所需空闲缓冲区,在此过程中需要cache buffers lru chain latch。
2. 刷脏块,同步到物理文件
数据库写入进程将脏缓冲区记录到文件上,查询LRU LIST,将相应缓冲区移动到FREE LIST的过程中,也要获得cache buffers lru chain latch。
在如下情况下将脏缓冲区记录到文件里:
2.1)session对应的服务进程为了获得空闲缓冲区,向DBWR 请求记录脏缓冲区时;
2.2)Oracle进程为执行Parallel Query 或 Backup,Truncate/Drop等工作,请求记录相关对象的脏缓冲区时;
2.3)周期性或管理上的原因检查点(checkpointing)被执行时。
2.4)Oracle 为了保障将通过FAST_START_MTTR_TARGET(或LOG_CHECKPOINT_TIMEOUT)指定的时间的恢复,周期性执行检查点。
2.5)管理员执行检查点命令或根据日志文件切换,也会发生检查点。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/25380026/viewspace-2646368/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/25380026/viewspace-2646368/
博客主要分析了DB BUFFER LRU列表的latch等待情况。一是进程载入内存、写入LRU列表时,需cache buffers lru chain latch;二是刷脏块、同步到物理文件时也需该latch,还列举了将脏缓冲区记录到文件的多种情况,如服务进程请求、执行特定工作等。

被折叠的 条评论
为什么被折叠?



