华为MetaERP 在 AWR 里区分 Buffer Cache 问题​ 和 PGA 问题,核心逻辑是:Buffer Cache 是“读不进来” → 等 I/O 把数据块装进内存​PGA 是“装不
2026/9/8 0:27:57 网站建设 项目流程

在 AWR 里区分Buffer Cache 问题​ 和PGA 问题,核心逻辑是:

Buffer Cache 是“读不进来” → 等 I/O 把数据块装进内存

PGA 是“装不下” → 排序/Hash 溢到临时表空间

两者等待事件完全不同,不会混淆。下面给你一套“看等待事件就能秒判”的方法。


一、先看 Wait Class 定性

Wait Class

对应内存区域

含义

User I/O

Buffer Cache

数据块不在内存,要等磁盘读

System I/O

Buffer Cache / Redo

DBWR/LGWR 后台写

Concurrency

Shared Pool / Latch

游标/锁竞争

Temp/IO或直接看事件名

PGA

排序/Hash 溢盘

二、Buffer Cache 问题的特征等待事件

核心事件

等待事件

含义

db file sequential read

单块读:索引扫描/回表,块不在 Buffer Cache

db file scattered read

多块读:全表扫,块不在 Buffer Cache

direct path read

大表直接读绕过 Buffer Cache(11g+ 自动判定)

free buffer waits

Buffer Cache 严重不足,DBWR 来不及腾空间

latch: cache buffers chains

Buffer Cache 热块争用(高并发访问同一块)

AWR 里的配套特征

  • Buffer Hit %​ 低(<90%)
  • Physical reads/sec​ 高
  • Top Segments​ 里MTL_MATERIAL_TRANSACTIONS索引/表排前列
  • Buffer Cache Advisory:加大后Est Phys Read Factor明显下降

一句话判定

db file*+ Buffer Hit 低 + 物理读高 → Buffer Cache 装不下,数据在磁盘上

三、PGA 问题的特征等待事件

核心事件

等待事件

含义

direct path read temp

PGA 不够,排序结果溢到临时表空间

direct path write temp

Hash Join/排序写临时文件

sorts (disk)

磁盘排序(AWR 的 Instance Activity Stats 里)

PGA memory operation

PGA 分配/回收等待

AWR 里的配套特征

  • In-Memory Sort %​ 低(<95%)
  • PGA Memory AdvisoryEstd Extra W/A MB Read/Written to Disk
  • PGA Overalloc Count > 0
  • Temp Tablespace​ 使用率飙升
  • SQL ordered by Sorts/Disk:INCTCW 或移动单分配 SQL 排前列

一句话判定

direct path * temp+ 磁盘排序高 + PGA Advisory 溢盘 → PGA 不够,运算在临时表空间上

四、对比表:一眼区分

维度

Buffer Cache 问题

PGA 问题

等什么

db file sequential/scattered read

direct path read/write temp

为什么等

数据块不在内存,要读磁盘

排序/Hash 放不下,写临时文件

命中率指标

Buffer Hit % 低

In-Memory Sort % 低

Advisory 看哪个

Buffer Cache Advisory

PGA Memory Advisory

溢出去哪

物理数据文件

临时表空间

INV 典型场景

MMT 全表扫报表、Workbench 无日期裁剪

INCTCW 大批量过账、移动单分配大排序、15万序列号接口

解决方向

加 db_cache_size / 分区 / SQL 加日期谓词

加 pga_aggregate_target / 分批 / 减少排序行数


五、实战:AWR 里 30 秒定性

Step 1:打开 AWR → Top 10 Timed Foreground Events

如果看到: db file sequential read 45% db file scattered read 20% → Buffer Cache 问题 如果看到: direct path read temp 50% direct path write temp 15% → PGA 问题 如果两者都有: 看谁 % of DB Time 更高 → 谁是主瓶颈

Step 2:确认 Advisory

  • Buffer Cache 问题 → 翻到Buffer Cache Advisory,看 Size Factor=1.0 行的Est Phys Read Factor,如果加大到 1.5x 时因子掉一半 → 确认 Buffer Cache 不足
  • PGA 问题 → 翻到PGA Memory Advisory,看Estd Extra W/A MB Read/Written to Disk,非 0 且大 → 确认 PGA 不足

Step 3:定位 SQL

  • Buffer Cache →SQL ordered by Gets找扫MTL_*大表的 SQL
  • PGA →SQL ordered by Sorts/Disk找排序大的 SQL

六、INV 场景两个经典画面

画面 1:Material Workbench 全组织慢

Top Events: db file sequential read 50% direct path read 20% Buffer Hit %: 82% Buffer Cache Advisory: 当前 4G → 6G 物理读降 40% → Buffer Cache 装不下 MMT,加 Buffer Cache + 加日期条件

画面 2:INCTCW 批量过账卡 + temp 暴涨

Top Events: direct path read temp 55% direct path write temp 20% In-Memory Sort %: 60% PGA Advisory: Overalloc=1, Extra W/A=8000MB → PGA 不够,分批过账 + 加 pga_aggregate_target

七、一句话总结

等磁盘数据文件 = Buffer Cache 不够(读不进来)

等临时文件 = PGA 不够(装不下溢出去了)

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询