1、获得保护hash bucket的CACHE BUFFERS CHAINS锁存器,读取需要SHARED模式,如果是修改则需要EXCLUSIVE模式,
如果发生争用等待latch:cache buffers chains
2、查看BUFFER HEADER,块是否已经在BUFFER里面,如果在对相应的缓冲区进行shared模式或者EXCLUSIVE模式的
buffer lock,如果发生BUFFER LOCK争用则等待BUFFER BUSY WAITS,如果正在通过DBWR写入到
缓冲区,则等待WRITE COMPLETE WAITS(逻辑读)
3、如果不在BUFFER CACHE中,获得CACHE BUFFER LRU chain后在LRU辅助列上检索空闲区域,
如果辅助区没有空闲区域,就在主队列上按照COLD HOT的COLD端寻找,如果找到可以覆盖的缓冲
区域,则对缓冲区叫EXCLUSIVE模式的BUFFER LOCK,并且将数据块读入到环境区,如果获得BUFFER LOCK
的过程发生争用则等待READ BY OYHER SESSION(物理读)
4、如果还是没有找到,服务器进程请求DBWR将脏数据写到数据文件,确保空闲缓冲区,如果等待DBWR写盘的时间就是FREE BUFFER WAITS。
阅读(2357) | 评论(1) | 转发(0) |