作者:o0風無痕0o | 来源:互联网 | 2014-05-22 14:36
ORACLE数据缓冲区DBcacheDBCACHE是以数据块为单位组织的缓冲区,数据库刚刚启动的时候,DBCACHE中几乎没有用户数据的缓冲,当会话访问数据库中的表或索引时,首先会检查DBCACHE中是否存在该数据,如果不...SyntaxHighlighter.all();
ORACLE数据缓冲区DB cache
DB CACHE是以数据块为单位组织的缓冲区,
数据库刚刚启动的时候,DB CACHE中几乎没有用户数据的缓冲,当会话访问数据库中的表或索引时,首先会检查DB CACHE中是否存在该数据,如果不存在,就会从数据文件中读取该数据块到DB CACHE中,然后再从DB CACHE中读取该数据。
定位DB CACHE中的数据块是通过散列算法实现的,有一个哈希链结构,缓冲区中正在使用的数据块都在上面。
如果要查找数据块,散列运算算出数据块所在链的链头,从链头的双向链表结构扫描下去,即可找到数据块。
这每一个链,我们称之为BUCKET,其数量在数据库启动后就不会改变,BUCKET数量有参数_DB_BLOCK_HASH_BUCKETS指定。
DB CACHE由BUFFER构成。
DB CHACHE中的算法有两种,LRU算法换进换出buffer,还有哈希。