来自tom
在Oracle 的较早版本中,只有一个块缓冲区缓存,所有段的所有块都放在这个区中。从Oracle 8.0开始,可以把SGA中各个段的已缓存块放在3个位置上。
默认池(default pool):所有段块一般都在这个池中缓存。这就是原先的缓冲区池(原来也只有一个缓冲区池)。
保持池(keep pool):按惯例,访问相当频繁的段会放在这个候选的缓冲区池中,如果把这些段放在默认缓冲区池中,尽管会频繁访问,但仍有可能因为其他段需要空间而老化(aging)。
用于想无限制(pin)的缓冲区,可以对那些需要经常访问并驻留在内存的小表使用keep pool。回收池(recycle pool):按惯例,访问很随机的大段(偶尔访问的大段)可以放在这个候选的缓冲区池中,这些块会导致过量的缓冲区刷新输出,而且不会带来任何好处,因为等你想要再用这个块时,它可能已经老化退出了缓存。要把这些段与默认池和保持池中的段分开,这样就不会导致默认池和保持池中的块老化而退出缓存。
需要注意,在保持池和回收池的描述中,我用了一个说法“按惯例”。因为你完全有可能不按上面描述的方式使用保持池或回收池,这是无法保证的。实际上,这3个池会以大体相同的方式管理块。将块老化或缓存的算法并没有根本的差异。这样做的目标是让DBA 能把段聚集到“热”区(hot)、“温”区(warm)和“不适合缓存”区(do not care to cache)。
理论上讲,默认池中的对象应该足够热(也就是说,用得足够多),可以保证一直呆在缓存中。缓存会把它们一直留在内存中,因为它们是非常热门的块。可能还有一些段相当热门,但是并不太热。这些块就作为温块。这些段的块可以从缓存刷新输出,为不常用的一些块(“不适合缓存”块)腾出空间。为了保持这些温段的块得到缓存,可以采取下面的某种做法:
将这些段分配到保持池,力图让温块在缓冲区缓存中停留得更久。
将“不适合缓存”段分配到回收池,让回收池相当小,以便块能快速地进入缓存和离开缓存(减少管理的开销)。
任何一种做法都会增加DBA所要执行的管理工作,因为要考虑3个缓存,要确定它们的大小,还要为这些缓存分配对象。还要记住,这些池之间没有共享,所以,如果保持池有大量未用的空间,即使默认池或回收池空间不够用了,保持池也不会把未用空间交出来。总之,这些池一般被视为一种非常精细的低级调优设备,只有所有其他调优手段大多用过之后才应考虑使用。
--将表使用keep pool,但是要确保db_keep_cache_size能够容得下要放入keep pool的所有对象。
--alter table table_name storage(buffer_pool keep);之后对表进行分析,确认表已被缓存到keep pool中。
--当keep pool中无法容纳时,会使用默认缓存区内存空间(默认缓存区有多余的空间)。
--当对象增长时,keep pool的内存空间也许会不再适合该对象。
测试:
keep pool相关资料:
http://yangtingkun.itpub.net/post/468/77951http://yangtingkun.itpub.net/post/468/78272http://yangtingkun.itpub.net/post/468/86429http://space.itpub.net/4227/viewspace-68852
分享到:
相关推荐
自己写好的对象池,可以拿下来直接用,挺简单的哈,为什么要50个字的描述,能说清楚不久得了,希望改进XXXXXXXXXXXXXXXXXXXX
android.support.v4.util.Pools使用的Demo,详情见博客:http://blog.csdn.net/u012810020/article/details/52915922
Memory Pools V1.2 Memory Pools V1.2
This class can preverify methods in program class pools, according to a given configuration.
ThreadPools
VC++ 6.0下实现的线程池程序。 用户可以在WorkItem下设置要完成的任务,设置好工作函数,即可运行线程池开始多线程工作。
Power pools are formal groups of Utilities that exchange electricity in order to reduce production costs. The purpose of this paper is to present a framework which assesses the impacts of different ...
我们可以创建事件监视器来记录跟下列类型的事件有关的信息:DATABASE、TABLES、DEADLOCKS [WITH DETAILS]、TABLESPACES、BUFFERPOOLS、CONNECTIONS STATEMENTS 和 TRANSACTIONS。 一般我们使用这个脚本来监控当前...
mem poolsmem poolsmem pools
uncached pages come the page pools, zero them before returning for security purposes (other allocations are zerod at alloc time.
对于DB2的调优,我们一般需要以下的步骤: DB2配置调优: 查看目前bufferpool的设置的方法: db2pd-db-bufferpools 来确定bufferpool相关的配置来进行性能瓶颈分析。 调整DB2内存的方法: 请参考官方...
relint-ci-pools更新发布池该池用于更新发布管道,因此可以一次运行多个作业。 当前有4个,并且锁定文件本身包含元数据,该元数据将在cf-deployment-concourse-tasks中使用,以动态地针对正确的环境。 证书本身是...
这是dhcpd-pools ISC dhcp共享网络和池范围使用情况的分析。 该命令的目的是计算ISC dhcpd控制的每个IP范围和共享网络池的使用率。 该命令的用户最有可能是具有较大IP空间的ISP和其他组织。 程序用C编写。设计目标是...
IBM DS8000存储中的Arrays,Ranks,Extent pools的概念
SP6ex1ThreadPools
2020 华为编程大赛,初赛,c++,java,初始编程思路
ThreadPoolWithCameraPreview, 在Android上,使用threadpools提高性能的演示 带相机预览的ThreadPool下载演示应用在 Google Play 上。项目演示了如何使用 HandlerThread s 和 ThreadPool s 在后台线程的android API...
commons-pools-2.2.6.1.jar
OSM游泳池OpenStreetMap中新墨西哥州阿尔伯克基的每个游泳池的平铺显示。 单击一个池以在Openstreetmap.org上查看它。建立自己的副本要求Node.js 克隆仓库git clone https://github.com/russbiggs/swimming-pools 将...
InnovationPools:Innovation Pools网站