可以通俗的将缓存到db buffer cache中的数据分为三种。
热块 | 经常被使用,通常不会因为lru算法而换出db buffer cache 中的数据 |
温块 | 不是经常,但也常常会被使用的块(但是有可能会被换出缓存中),所以应该力图让这部分数据也在db buffer cache中存留的更久 |
不适合缓存块 | 不经常使用的块 |
综上所述
default pool | 热块 |
keep pool | 温块 |
recycle pool | 不适合缓存的块 |
也可以叫做热区、温区、不适合缓存区
其实各种池只是一个叫法,oracle并没有对他们进行特殊的处理。可以将不适合缓存的块放到keep pool池中,当然也可以将温块放到recycle pool中,这并不影响他们的工作。
但是要注意,存放不适合缓存的块应该尽可能的小,这样能够保证block可以快速的进入缓存,和离开缓存。(管理的开销)。
所以可以说db buffer cache中多池技术,是为了将各种数据区分开,使各种数据块能够使用最优的缓存方案
。
db_nk_cache nk,这样做是为了缓存其他块大小的数据
如果没有设置cache的大小,非默认块无法建立。