我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Oracle AWR性能优化一例

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Oracle AWR性能优化一例

有一个批处理程序运行超过24小时仍然不能完成,采集了程序运行期间的AWR报告如下。
Oracle AWR性能优化一例

由上可以看到,该系统为AIX的单实例数据库,采样时长1319.96 分钟,DB time 1532.15分钟。

看一下TOP等待事件:
Oracle AWR性能优化一例

可以看到有非常高的DB file scattered read等待事件,该等待事件表示将大量的数据块读入到不连续的内存区域,往往预示着大的全表扫描。
在程序运行期间,查看ASH动态视图v$active_session_history,同样可以发现发生着大量的DB file scattered read 等待事件,从该视图的执行计划列可以看到正在发生着 Table Full Scan.

接着我们看TOP SQL部分:
Oracle AWR性能优化一例

Oracle AWR性能优化一例

我们看到 SQL ID 为2yhcj6jcbtvac的SQL语句消耗大量的资源, 该SQL语句如下:
SELECT MATCH_CLIENT_ID , MATCH_CLIENT_ROLE , DECODE(MATCH_SYS_CODE, 'HKP', 1, 'UVP', 2, 'CAS', 3, 'NB', 4, 'GP', 5, 'GLH', 6, 'GI', 7, 'MFD', 8, 'CRC', 9, 10) AS MATCH_POL_ORDER , MATCH_SYS_CODE , MATCH_LOB , MATCH_CONTRACT_NO , MATCH_CERTIFICATE_NO FROM POSSIBLE_CUST_REPORT_SCB WHERE BATCH_DATE = :B3 AND CLIENT_ID = :B2 AND MATCH_CLIENT_ID = :B1

可以看到该语句为一个单表查询,从v$active_session_history也可以看到就是该语句发生着大量的DB file scattered read, 查看该表的定义,没有索引,所以初次可以判定,以上的SQL语句被多次执行,并且因为没有索引所以在产生全表扫描。

查看AWR的segment部分,更确认了这一点:
Oracle AWR性能优化一例

Oracle AWR性能优化一例

该表段上产生最大的逻辑读、物理读和非优化的读取。

所以, 现在完全可以确定,该表上大量的全表扫描是最主要的性能问题,所以需要在该表上添加索引。

在该表上创建索引:
CREATE INDEX idx1_POSSIBLE_CUST_REPORT_SCB ON POSSIBLE_CUST_REPORT_SCB(BATCH_DATE,CLIENT_ID,MATCH_CLIENT_ID);

所以创建完成后,立刻再次查看v$active_session_history,可以看到执行路劲改走索引。
最终结果确认,该批处理程序性能提升3倍以上。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Oracle AWR性能优化一例

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Android性能优化(一)启动优化

以前做手机的时候,我非常重视app的性能优化。其实一直以来,在工作中我总会去强调性能优化的重要性。但是,很多时候,由于一些外界因素,我们对app的一些性能指标不会那么重视。但是,性能优化依然是做好一个产品的重中之重。试想一下,如果用户费了很
2022-06-06

C++的性能优化实例

性能优化不管是从方法论还是从实践上都有很多东西,从 C++ 语言本身入手,介绍一些性能优化的方法,希望能做到简洁实用。

oracle性能优化(项目中的一个sql优化的简单记录)

在项目中,写的sql主要以查询为主,但是数据量一大,就会突出sql性能优化的重要性。其实在数据量2000W以内,可以考虑索引,但超过2000W了,就要考虑分库分表这些了。本文主要记录在实际项目中,一个需要查询很慢的sql的优化过程,如果有更好的方案,请在下面留
oracle性能优化(项目中的一个sql优化的简单记录)
2015-11-21

性能优化指南:性能优化的一般性原则与方法

【本文转自博客园 作者:xybaby 原文链接:https://www.cnblogs.com/xybaby/p/9055734.html】作为一个程序员,性能优化是常有的事情,不管是桌面应用还是web应用,不管是前端还是后端,不管是单点应
2023-06-05

编程热搜

目录