《精通Oracle 10g系统管理》中讲到了Oracle数据高速缓存,但书中对一些基础概念的讲解比较简单。对于像我这种不很懂Oracle的人来讲,理解这一节确实有点困难。下面的理解不知道有几分是正确的。
数据高速缓存用于存放Oracle系统最近使用到的数据块信息。
数据块是Oracle系统存储数据的最小单位。从Oracle9i开始,用户可以自定义表空间使用的数据块的尺寸。Oracle数据块分为标准数据块和非标准数据块,初始化参数DB_BLOCK_SIZE用于定义标准数据块的尺寸。如果一个数据块的尺寸不等于DB_BLOCK_SIZE,那么它就是非标准数据块。如:
假定DB_BLOCK_SIZE=4096,则4K数据块就是标准数据块;其它大小数据块就是非标准数据块。
一种类型的数据块对应一种类型的高速缓冲区。Oracle将高速缓冲区分为标准高速缓冲区和非标准高速缓冲区。为什么一种类型的数据块对应一种类型的高速缓冲区呢?因为高速缓冲区是由一系列的数据块组成的,显然无法将8k大小的数据块放入4k大小数据块的高速缓存。用户可以使用参数DB_nK_CACHE_SIZE来指定高速缓存的大小,如DB_2K_CACHE_SIZE、DB_4K_CACHE_SIZE、DB_8K_CACHE_SIZE分别指定2k、4k、8k高速缓存的大小。
之所以详细讲解数据块是因为高速缓存的基本单位是数据块,一个高速缓存由若干个数据块组成。可以根据数据块的大小将高速缓存分为标准高速缓存和非标准高速缓存、或者直接将高速缓存分为2k缓存、4k缓存、8k缓存...,另外,还可以按照高速缓冲区的使用情况,将其分为脏缓冲区、空闲缓冲区和忙缓冲区。
Oracle无论是读数据还是修改数据,都是先将数据加载到高速缓存中,然后在高速缓存中完成数据的读写。脏缓冲区是指内容与数据块不一致的缓冲区,即数据被修改还未保存;空闲缓冲区是指内容与数据块一致或不包含数据的缓冲区;忙缓冲区是指服务器进程正在访问的缓冲区。
阅读(1368) | 评论(0) | 转发(0) |