每天学透1个知识点—Oracle性能调优之如何解读AWR报告

请解读一份AWR报告,你会重点关注哪些部分?如何从中发现性能瓶颈?

“拿到一份AWR报告,我会按以下顺序阅读:

  1. Report Summary:首先看 DB Time 和 Elapsed Time。DB Time/Elapsed Time 如果远大于CPU核数,说明系统存在大量等待。

  2. Load Profile:关注 Redo size、Logical reads、Physical reads、Executions 等指标。对比基线,判断负载变化。

  3. Instance Efficiency Percentages:Buffer Nowait %、Redo NoWait %、Buffer Hit % 等。如果Buffer Hit %低于90%,可能需要优化内存或I/O。

  4. Top 5 Timed Events:这是重中之重。等待事件直接告诉你数据库在等什么。常见等待事件:

    • db file sequential read:通常是索引扫描的单块读,如果过高可能是索引不够高效。

    • db file scattered read:通常是全表扫描的多块读,如果过高可能是缺少索引。

    • log file sync:提交等待,可能是提交频繁或日志I/O慢。

    • enq: TX - row lock contention:行锁竞争,需要排查并发事务。

  5. SQL Statistics:

    • SQL ordered by Elapsed Time:找出消耗时间最多的SQL,这些是调优的重点。

    • SQL ordered by Gets(逻辑读)和 Reads(物理读):找出资源消耗大户。

  6. Segment Statistics:查看哪些段(表/索引)的物理读、逻辑读最多,可能是热点对象。

  7. Time Model:了解DB Time主要消耗在哪个环节(如SQL执行、PL/SQL执行等)。

根据这些信息,我会形成初步结论,比如‘系统I/O等待严重,主要因为某几个SQL进行了大量全表扫描,建议添加索引’。”

posted @ 2026-02-26 11:12  一只竹节虫  阅读(53)  评论(0)    收藏  举报