Oracle11g中的result cache
这篇讲的是Oracle 11g中一个常被忽视却十分实用的性能特性——结果缓存。作者从一次具体的查询优化场景切入,拆解了结果缓存的工作原理:它能在内存中直接保存SQL查询或PL/SQL函数的结果集,避免重复执行相同的复杂计算。 文章的核心在于将结果缓存与数据库的另外两大缓存——缓冲区缓存和共享池,进行了清晰的对比。关键差异点在于缓存的粒度:缓冲区缓存存储的是数据块,共享池缓存的是SQL语句的解析树和执行计划,而结果缓存直接存储了最终的查询结果。这意味着,对于那些依赖小量基础数据但计算密集的查询,结果缓存的命中能带来显著的性能飞跃。 作者也客观指出了其适用场景的边界。结果缓存对结果集较小、数据变更不频繁(如数据仓库报表、参考表查询)的场景效果最佳。但在高并发DML操作的OLTP系统中,频繁的数据失效反而可能增加开销。文章最后通过配置参数和监控视图的示例,给出了落地的实践指引。