其他有关Oracle BUFFER CACHE的优化思路
除了前面博客优化思路之外,常见的BUFFER CACHE优化思路还有如下几点:
(1)使用直接路径读写(DIRECT PATH I/O)。虽然这个优化手段超出了“热”块的解决范围,但是通过直接路径读写可以绕过BUFFER CACHE这个环节,从而直接将数据读至PGA中。当BUFFER CACHE“闹”得不可开交时,便可使用这种方式绕过这块是非之地,以免忙中添乱。Oracle主要在以下情况下使用DIRECT PATH I/O:
为了排序工作而读写排序段(SORT SEGMENT)时。
开启并行读取数据文件时(使用直接路径读)。
并行DML和CTAS创建表时(使用直接路径写)。
读写有NOCACHE属性创建的LOB段时。
(2)在CPU紧张的系统中,可以适当减小BUFFER CACHE,从而增大系统的I/O压力来达到释放CPU资源的目的。此外还可以设置DB_CACHE_ADVICE参数来为OFF进一步缓减CPU的压力。相反,在I/O紧张的系统中,可以适当增加BUFFER CACHE来缓减I/O压力。
(3)在RAC系统中,为了减少节点间的数据块传输,提高本地节点的BUFFER CACHE命中率,可以在不同的节点运行不同的业务。比如在医院的HIS系统中,住院业务和门诊业务往往运行在不同的节点上。