WEB开发网
开发学院数据库Oracle Oracle中Buffer Cache内存结构及监控 阅读

Oracle中Buffer Cache内存结构及监控

 2007-05-12 12:24:11 来源:WEB开发网   
核心提示: 这里的hash chain就是属于同一个hash bucket的所有buffer header所串起来的链表,实际上,Oracle中Buffer Cache内存结构及监控(3),hash bucket只是一个逻辑上的概念,每个hash bucket都是通过不同的hash chain而体现出

这里的hash chain就是属于同一个hash bucket的所有buffer header所串起来的链表。实际上,hash bucket只是一个逻辑上的概念。每个hash bucket都是通过不同的hash chain而体现出来的。每个hash chain都会由一个cache buffers chains latch来管理其并发操作。

而对于buffer header来说,每一个数据块在被读入buffer cache时,都会先在buffer cache中构造一个buffer header,buffer header与数据块一一对应。buffer header包含的主要信息有:

1) 该数据块在buffer cache中实际的内存地址。就是上图中的虚线箭头所表示的意思。

2) 该数据块的类型,包括data、segment header、undo header、undo block等等。

3) 该buffer header所在的hash chain,是通过在buffer header里保存指向前一个buffer header的指针和指向后一个buffer header的指针的方式实现的。

4) 该buffer header所在的LRU、LRUW、CKPTQ等链表(这些链表我们后面都会详细说明)。也是通过记录前后buffer header指针的方式实现。

5) 当前该buffer header所对应的数据块的状态以及标记。

6) 该buffer header被访问(touch)的次数。

7) 正在等待该buffer header的进程列表(waiter list)和正在使用该buffer header的进程列表(user list)。

buffer cache中,缺省的hash bucket的数量或者说缺省有多少条hash chain链表,是由一个隐藏参数:

_db_block_hash_buckets决定的。置于该参数的取值,在我的测试中,8i下,该参数缺省为db_block_buffers×2;但是到了9i以后,该参数似乎取的是小于且最接近于db_block_buffers×2的素数。

2.2 转储buffer cache

就象实例中的其他内存结构一样,oracle提供了可以将buffer cache转储到跟踪文件的方法。方法如下:

上一页  1 2 3 4 5 6 7  下一页

Tags:Oracle Buffer Cache

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接