中间件速查手册
关系型数据库内存结构

SGA / PGA 是什么?

SGA 是实例共享的内存,PGA 是每个会话私有的内存

类比:SGA 是公共阅览室,PGA 是每个人的书桌

SGA 里有什么

它是所有会话共享的大内存池,几个主要部分组成。

  • Buffer Cache:缓存数据块,命中就不用读磁盘,通常占 SGA 最大头
  • Shared Pool:缓存 SQL 解析结果和执行计划,命中就跳过硬解析
  • Redo Log Buffer:重做日志的内存缓冲,提交时由 LGWR 刷盘
  • Large Pool / Java Pool:大块内存分配、Java 存储过程用

PGA 里有什么

每个服务进程私有:排序区、哈希 join 区、游标状态。PGA 不够时排序会落临时表空间,性能断崖式下降——所以大查询慢,先看是不是 PGA 太小导致磁盘排序。

调优入口

现代版本一般开 AMM(自动内存管理)或 ASMM,让 Oracle 自己分配。手工调参的时代基本过去了,但理解 SGA/PGA 的边界仍然是看懂 AWR 报告的前提。

它出现在这些中间件里

相关概念