解读“Time Model Statistics”中的“sql execute elapsed time”
全网最全面的Oracle AWR 专栏,持续更新中…
在Oracle AWR报告中,“Time Model Statistics”部分通过从用户的视角展示DB Time的分配情况。
通常情况下,“sql execute elapsed time”是DB Time的主要组成部分。由于设计Oracle数据库的目的就是为了执行SQL,理论上这个值应接近DB Time。然而,在实际中,这两者之间往往存在显著差距。那么,这一差距的来源是什么?
答案在于Oracle如何对SQL进行分类。并非所有SQL语句都被计入“SQL execute elapsed time”。特别是COMMIT和ROLLBACK——尽管是有效的SQL语句——并未包含在“sql execute elapsed time”中。这些SQL的运行时间仍计入DB Time,但不计入“SQL execute elapsed time”。这一事实可以通过动态性能视图(如V$SQL)中找不到COMMIT或ROLLBACK,以及AWR报告的“SQL Statistics”部分中没有这些操作的记录得到证实。如果COMMIT被视为普通SQL,其高频使用特性可能使其出现在TOP SQL中。在这方面Oracle和MySQL不同。
在这个例子中,“sql execute elapsed time”仅占DB Time的68%,这表明COMMIT操作可能是剩余32%的主要组成部分。
在“Top Events”部分,约30%的DB Time被“log file sync”等待事件占用,这一比例与观察到的差距高度吻合,从而支持了这一假设。
号主在certview.oracle.com网站上的证书清单截图。
关于号主,姚远:
- Oracle ACE(Oracle和MySQL数据库方向)
- 华为云最有价值专家
- 《MySQL 8.0运维与优化》的作者
- 拥有数十项数据库认证
- 曾任IBM公司数据库部门经理
- 20+年DBA经验,服务2万+客户
- 精通C和Java,发明两项计算机专利
- 两次获得国家部级奖