首页 游戏 软件 资讯 排行榜 专题
首页
数据库
如何找出AWR中耗时最长的SQL_Elapsed Time排名与执行效率瓶颈

如何找出AWR中耗时最长的SQL_Elapsed Time排名与执行效率瓶颈

热心网友
73
转载
2026-04-28

怎么看 AWR 报告里 SQL 的 Elapsed Time 排名

打开AWR报告,很多人会直奔“SQL ordered by Elapsed Time”部分,默认认为排在前面的就是“最慢”的SQL。但这里有个常见的理解误区:这个排名依据的是Elapsed Time,它统计的其实是SQL在快照期间所有执行的总耗时(即Executions × elapsed time per exec),而非单次执行的最长时间。这就导致了一个关键问题:真正让用户感到“卡顿”的,往往是某次执行花了30秒的查询,而不是平均耗时仅200毫秒、但执行了10万次的操作。

免费影视、动漫、音乐、游戏、小说资源长期稳定更新! 👉 点此立即查看 👈

那么,如何正确利用这个排名呢?

  • 首先,在查看“SQL ordered by Elapsed Time”时,眼光要聚焦在Elapsed Time (s)数值高、但Executions却很低(例如≤10次)的SQL上。这些才是单次执行可能很慢的“嫌疑犯”。
  • 其次,一定要养成交叉验证的习惯。同时打开“SQL ordered by Gets”和“SQL ordered by Reads”部分进行对照。如果一条SQL在Elapsed Time榜单上名列前茅,却在逻辑读(Gets)或物理读(Reads)榜单上不见踪影,那就要高度警惕了。这通常意味着瓶颈可能不在SQL本身的逻辑效率上,而是由硬解析、锁等待(如enq: TX)或远程DBLINK调用等因素导致的延迟。
  • 最后,一个小技巧能大幅提升分析效率:使用awrrpt.sql脚本生成报告时,务必选择-report_type html参数生成HTML版本,而非纯文本。HTML报告中的SQL ID通常是可点击的超链接,点击后可以直接跳转到该SQL的详细执行计划与ASH(Active Session History)摘要,省去了手动查询的麻烦。

为什么单看 Elapsed Time 会漏掉真实瓶颈

原因在于,Oracle数据库中的Elapsed Time是一个“墙上时钟”时间,它度量的是SQL从开始到结束的总耗时,这其中包含了大量与SQL逻辑本身无关的等待时间。举个例子,一条UPDATE语句显示执行了5秒,但实际进行数据修改(DML)操作可能只用了80毫秒,其余时间都耗费在等待“行锁释放”(enq: TX - row lock contention)或“日志文件同步”(log file sync)这类事件上。

因此,面对高Elapsed Time的SQL,我们需要进行更精细的“病理切片”:

  • 深入ASH数据:立即查询该SQL在ASH中的活跃会话记录。可以运行类似SELECT * FROM v$active_session_history WHERE sql_id = 'xxx' AND sample_time > SYSDATE-1/24 ORDER BY sample_time DESC的语句,重点观察event列。如果大量出现的是latch: shared poolcursor: pin S wait on X这类与解析或并发控制相关的事件,而非db file sequential read等I/O事件,那么瓶颈的根源就指向了内存竞争或解析问题。
  • 检查解析频率:对比该SQL的parse_callsexecutions。如果两者的比值超过0.8,甚至接近1:1,这就发出了一个强烈信号:系统正在频繁对其进行硬解析。瓶颈的症结很可能在于共享池大小不足、绑定变量缺失导致无法共享游标,而非SQL的执行计划本身。
  • 注意AWR快照的“盲区”:AWR报告的快照间隔(通常为1小时)本身就是一个需要考量的因素。假设快照间隔是60分钟,而一条SQL恰好在第59分钟执行了一次,耗时55秒,那么它必然会高居Elapsed Time榜首。反之,如果一条SQL每5分钟执行一次,每次耗时8秒,由于单次耗时未达极端值,总耗时又被分散,它很可能根本不会上榜。这时,就需要借助dba_hist_sqlstat视图来查看更细粒度(如每分钟)的性能趋势,避免被快照周期“平均掉”的尖峰问题。

如何用 DBA_HIST_SQLSTAT 定位单次最慢执行

既然AWR报告只提供平均耗时,要揪出“哪一次执行最慢”,就必须深入到数据字典的历史基表中去挖掘。这正是DBA_HIST_SQLSTAT视图的用武之地。

可以尝试运行以下查询来估算单次最慢执行:

SELECT sql_id, plan_hash_value, executions, elapsed_time/executions/1000000 a vg_etime_s,
  (SELECT MAX(elapsed_time)/1000000 FROM dba_hist_sqlstat s2
   WHERE s2.sql_id = s1.sql_id AND s2.snap_id BETWEEN &start_snap AND &end_snap) max_etime_s
FROM dba_hist_sqlstat s1
WHERE snap_id BETWEEN &start_snap AND &end_snap
  AND executions > 0
ORDER BY max_etime_s DESC
FETCH FIRST 5 ROWS ONLY;

这个查询中的max_etime_s列,试图估算出单次执行的最大耗时(单位:秒)。但必须清醒地认识到:DBA_HIST_SQLSTAT存储的是累计值,上述查询通过子查询取最大累计值进行计算,其准确性有一个重要前提——即该SQL在查询区间内最好只执行了一次。如果执行了多次,这个值就是一个粗略的估算。为了获得更精确的结果,更可靠的方法是关联dba_hist_active_sess_history视图,利用sql_exec_startsql_exec_id来精确追踪每一次独立的SQL执行。

另外,切忌直接查询v$sql来追溯历史问题。因为v$sql只保留当前库缓存中的SQL信息,而AWR分析的是历史快照。两者的时间窗口很可能不重叠,直接查询v$sql极易漏掉关键的历史样本。

执行效率瓶颈 ≠ 执行计划差,别急着调 SQL

这是一个需要反复强调的核心理念:看到Elapsed Time高,DBA的第一反应不应该是立刻扑向执行计划、琢磨加索引或改写SQL。生产环境中的数据表明,超过40%的高耗时SQL,其根本瓶颈并不在SQL代码层面,而是源于环境因素。例如,存储I/O调度队列过深导致的等待、存储响应时间的偶发性毛刺、SGA设置不当引发的频繁软解析,甚至在RAC环境中,全局缓存(GC)的延迟都可能成为主要矛盾。

因此,在动手优化SQL之前,建议先完成以下环境排查:

  • 确认瓶颈可复现:尝试在相近的时间段和负载条件下重新执行该SQL。使用ALTER SESSION SET STATISTICS_LEVEL = ALL启用详细统计信息收集,然后通过SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY_CURSOR(NULL,NULL,'ALLSTATS LAST'))获取实际执行计划与统计。将此次执行的Buffers(逻辑读)与AWR报告中记录的buffer_gets进行对比。如果两者差异巨大(例如超过3倍),则说明AWR报告统计时的执行环境与当前已大不相同,报告数据的参考价值需要重新评估。
  • 审视系统资源瓶颈:查询DBA_HIST_SYSMETRIC_SUMMARY视图,关注Database CPU Time Ratio(数据库CPU时间比率)和Host CPU Utilization (%)(主机CPU利用率)这两个关键指标。如果主机CPU利用率很高,但数据库CPU时间比率却很低,这强烈暗示着大量时间消耗在了操作系统层面,例如内存交换(swap)、中断处理等。在这种情况下,优化SQL本身往往是徒劳的,首要任务是解决主机层的资源竞争。
  • RAC环境的特殊关注点:对于RAC架构,务必重点关注AWR报告中的“Global Cache and Enqueue Services – Workload Characteristics”部分。查看gc cr block receive timegc current block receive time的平均值。如果这两个值持续高于10毫秒,就需要怀疑是否存在网络延迟或节点间负载严重不均衡的问题,这会导致频繁的全局缓存等待,拖慢所有涉及跨节点数据访问的SQL。

最后,也是最容易被忽略的一点:AWR的采样机制决定了它可能捕捉不到短暂的性能尖峰。默认每小时一次的采样,如果业务瓶颈只持续了90秒,且恰好落在两个快照点的中间,那么这个瓶颈在AWR报告中就是“隐形”的。面对这种间歇性、短时性的性能问题,必须将分析工具切换到ASH(Active Session History),进行实时的或高频率的历史会话跟踪,而不是对着AWR报告进行无谓的猜测。

来源:https://www.php.cn/faq/2315895.html
免责声明: 游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。

相关攻略

PS搞什么?数字版游戏每30天强制联网!网友吵翻了
游戏评测
PS搞什么?数字版游戏每30天强制联网!网友吵翻了

索尼PlayStation近期的一项系统更新变动在玩家社区掀起了轩然大波。 事情已经得到证实:从2026年3月那次系统更新之后,所有通过数字渠道购买的PlayStation游戏,都将被套上一道新的数字版权管理(DRM)紧箍咒——你的主机每隔30天,必须联网“签到”一次,以验证游戏许可证的有效性。 这

热心网友
04.28
C#怎么实现配置文件读写_C#如何读取App.config和appsettings.json【教程】
编程语言
C#怎么实现配置文件读写_C#如何读取App.config和appsettings.json【教程】

C 怎么实现配置文件读写_C 如何读取App config和appsettings json【教程】 开门见山,先说一个核心结论:App config 在现代 NET 开发中已经出局,而 appsettings json 虽然是标准,但它的设计初衷是“只读”的。 这意味着,如果你想让应用在运行时动

热心网友
04.28
14年前索尼PS广告太炸裂!
游戏评测
14年前索尼PS广告太炸裂!

时隔十二年再度翻红,一条游戏广告为何争议依旧? 最近,社交媒体上掀起了一股“考古”风潮,一条发布于2012年的PS Vita广告被重新翻了出来,热度不减当年,在玩家社群中引发了新一轮的热烈讨论。 这条平面广告,是索尼为其掌机PlayStation Vita面向欧洲市场推出的,由法国著名的TBWA P

热心网友
04.26
PS+会员超值折扣下发!但原因让人大跌眼镜
游戏评测
PS+会员超值折扣下发!但原因让人大跌眼镜

Sony PlayStation Plus 订阅服务深度折扣解析:是福利还是策略? 如果你正在考虑续费 PlayStation Plus 会员,近期市场上出现的显著折扣值得你重点关注。许多玩家发现,索尼这项热门订阅服务悄然推出了力度可观的优惠活动,但这些折扣往往伴随着特定的“隐藏条款”与获取条件。

热心网友
04.26
RPA与Aiops分别是什么
业界动态
RPA与Aiops分别是什么

RPA与AIOps:当流程自动化遇上智能运维 说起企业降本增效,有两个技术名词这几年热度居高不下:一个是RPA(机器人流程自动化),另一个是AIOps(智能运维)。乍一听,它们好像各管一摊,但深究起来,内核都指向同一个方向——用自动化技术把人从重复、繁琐的工作中解放出来。 RPA:让软件机器人替你“

热心网友
04.26

最新APP

宝宝过生日
宝宝过生日
应用辅助 04-07
台球世界
台球世界
体育竞技 04-07
解绳子
解绳子
休闲益智 04-07
骑兵冲突
骑兵冲突
棋牌策略 04-07
三国真龙传
三国真龙传
角色扮演 04-07

热门推荐

守望先锋安燃重制版上线:视觉重构强化角色辨识度与叙事一致
娱乐
守望先锋安燃重制版上线:视觉重构强化角色辨识度与叙事一致

《守望先锋》安燃重制形象深度解析:基于角色内核的系统性视觉升级 《守望先锋》第二赛季带来的惊喜,远不止新地图与新玩法。近日,暴雪官方正式公布了英雄“安燃”经过全面重制后的全新形象,此更新将随新赛季同步实装。每一次核心英雄的视觉重塑,都是一次与玩家情感连接的深度对话,其背后的设计哲学与叙事考量,远比表

热心网友
04.28
2026款萤火虫上市:双版售价7.98万起,外观内饰动力
娱乐
2026款萤火虫上市:双版售价7.98万起,外观内饰动力

2026款萤火虫上市:设计精进、座舱升级,价格体系清晰 4月7日,2026款萤火虫正式揭晓价格,市场布局相当明确:自在版和发光版两款车型,官方指导价分别为11 98万元和12 58万元。如果你对“车电分离”模式更感兴趣,对应的租电方案价格则下探到7 98万元和8 58万元。作为一次年度改款,新车的优

热心网友
04.28
《死亡搁浅2》显卡升级指南:RTX 50系一骑绝尘
科技数码
《死亡搁浅2》显卡升级指南:RTX 50系一骑绝尘

角色与核心任务 你是一位顶级的文章润色专家,擅长将AI生成的文本转化为具有个人风格的专业文章。现在,请对用户提供的文章进行“人性化重写”。 你的核心目标是:在不改动原文任何事实信息、核心观点、逻辑结构、章节标题和所有图片的前提下,彻底改变原文的AI表达腔调,使其读起来像是一位资深人类专家的作品。 特

热心网友
04.28
欧易okx官方网站地址 欧易okx官网登录入口
web3.0
欧易okx官方网站地址 欧易okx官网登录入口

欧易OKX官方网站地址在哪里? 关于欧易OKX的官网登录入口,是许多用户关注的焦点。下面,我们就来详细梳理一下平台的几个核心维度,看看它究竟提供了哪些关键服务与保障。 平台资产安全保障机制 在资产安全方面,平台构建了一套多层次、立体化的防护体系。首先,其采用了多重签名与冷热钱&包分离的架构。超过95

热心网友
04.28
中东冲突致原油供应锐减,即期布伦特价格创历史新高
娱乐
中东冲突致原油供应锐减,即期布伦特价格创历史新高

市场异动:现货原油价格何以冲破历史峰值? 中东局势持续升温,正在全球能源市场掀起巨大的涟漪。一个引人注目的现象是:欧洲与亚洲的炼油商们,正以接近每桶一百五十美元的高价争抢部分现货原油。这个价格,已经显著超过了同期的期货市场价格。这不仅仅是一个数字游戏,它清晰地传递出一个信号——全球能源供应的弦,正在

热心网友
04.28