3.4.2 Keep pool 和Recycle pool 的逻辑结构
备注:本章有待修正,先发上来,资料为其他人整理的,我还没有搞清楚
见到过3种版本的说法:
版本一:本帖中neilkooo说的
由于Keep中的块是不会被aged out的,当写满的时候,如果再有新块要装到keep池中,就会把他装到default池中!
版本二:
(1) 来自Oracle文档Oracle® Database Performance Tuning Guide 10g Release 2 (10.2) Part Number B14211-03
(2) 7.2.4
Each buffer pool uses the same LRU replacement policy (for example, if the KEEP pool is not large enough to store all of the segments allocated to it, then the oldest blocks age out of the cache).
来自metalink "BUFFER_POOL KEEP LRU usuage"
The buffer pool LRU algorithm operates independently on each pool. Therefore if you fill up your keep cache and additional blocks need to be allocated, then LRU blocks will be aged out.
对此我的理解是新块会把最久使用过(LRU)的块替换掉。
版本三:来自yangtingkun的博文:KEEP池的CACHE特点(二)
而KEEP池没有采用这种算法,KEEP池其实是一块可用内存采用类似循环的算法进行访问。如果KEEP池里面还有剩余空间,则新的数据会首先使用剩余的空间,如果KEEP池已经存储满了,Oracle会从头开始重用KEEP池。
对此我的理解是新块会把最久装入的块替换掉。虽然跟Oracle文档相左,但实验是很有说服力的。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/347643/viewspace-620117/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/347643/viewspace-620117/