当select * from emp;时,服务器进程首先在数据库高速缓冲区中搜索所需的数据。如果找到了就直接使用而不进行磁盘操作,如果没有找到,就进行磁盘操作把数据文件中的数据读入到数据库高速缓冲区中。
管理数据库高速缓存也是使用LRU算法,一般使用参数文件中的db_block_size和db_block_buffers
两个参数来设置数据库高速缓存区的大小。其中db_block_size 表示为oracle数据块的大小,db_block_buffers表示缓存区的个数。两个数相乘表示数据库高速缓存区的值。
如果要改变db_block_size的值需要重构数据库,仅此,只能通过db_block_buffers来改变数据库高速缓存区,但是需要重启数据库。
oracle9i以后,提供了一个动态的参数来改变数据库高速缓冲区的大小,就是db_cache_size,例如:
alter system set db_cache_size=48m;