BUFFER CACHE寻找流程

简介: 1、获得保护hash bucket的CACHE BUFFERS CHAINS锁存器,读取需要SHARED模式,如果是修改则需要EXCLUSIVE模式,如果发生争用等待latch:cache buffers chains2、查看BUFFER HEA...
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。
相关文章
|
5月前
Cache 和 Buffer 有什么区别?
Cache 和 Buffer 有什么区别?
|
缓存 Linux 存储
Linux内存buffer和cache的区别
在Linux的内存分配机制中,优先使用物理内存,当物理内存还有空闲时(还够用),不会释放其占用内存,就算占用内存的程序已经被关闭了,该程序所占用的内存用来做缓存使用,对于开启过的程序、或是读取刚存取过得数据会比较快。
2318 0
|
缓存 Linux 存储