一.我们可以通过配置Shared Pool(保证用户在内存中查找到已经缓存的语句)改进性能;还有一个重要的方法就是:使用户可以在内存找到他们所请求的数据! 这就需要通过Database Buffer Cache(数据库缓冲区的高速缓存区)来实现。
Buffer Cache是SGA的一个组件,用来缓存用户最近在数据库中访问过的段数据块的副本。这些副本和它们在磁盘上的对应块是同步的! 如果不同步,就是所谓的脏缓冲区! 从Cache往磁盘上写,我们称之为写盘。管理脏缓冲区的机制叫做Dirty List(脏列表)或Write List(写列表)。这个列表里面跟踪已经insert,update,delete但是还没有写盘的语句。最终的写盘工作由ORACLE后台进程Database Writer(DBW0)完成。
Buffer Cache也是由一LRU算法来管理。*FTS(全表扫描期间)表缓冲区直接放在LRU的最近最少使用那端。
二.测量Database Buffer Cache的性能
select 1 - ((physical.value - direct.value - lobs.value) / logical.value)
"Buffer Cache Hit Ratio"
from v$sysstat physical,v$sysstat direct,v$sysstat lobs,v$sysstat logical
where physical.name = 'physical reads'
and direct.name='physical reads direct'
and lobs.name='physical reads direct (lob)'
and logical.name='session logical reads';