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/
本文探讨了Oracle数据库中KEEP池的不同理解和解释。总结了三种不同版本的观点:一是当KEEP池满时新块会被放入DEFAULT池;二是新块会替换最久未使用的块;三是新块会覆盖最早装入的块。通过实验验证了第三种观点。
未命名.JPG
2795

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



