awr性能调优案例

1. 故障概述

20141010日上午910分左右开始,营业厅等前端出现访问、业务办理等长时间无响应现象,定位业务访问相关数据库,为中心数据库RAC;通过排查,最终定位为update语句对一上千万数据量的表进行全表扫描,造成大量的db file scattered read,引发数据库严重的IO性能问题,造成此次数据库响应缓慢的原因。通过新建索引后,故障消除,数据库恢复正常响应

云和恩墨工程师协助从数据库层面进行问题分析排查,以下是对于此次故障的分析及总结。

2. 故障分析

观察问题时间段AWR性能负载报告,发现数据库于9点至9半的半小时采样时间中DB Time接近10000分钟DB Time/Elapsed约等于330远超cpu80数据库遭遇严重的性能问题。

正常

 

 

 

异常

 

 

此时数据库负载中看到,对比正常时间段,逻辑读与物理读有异常的增长:

正常

 

 

异常

 

 

且实例效率中,正常应基本大于90%buffer命中率,大大降低到71%

 

正常

 

 

异常

 

说明内存buffer中的数据进行了大量的换出,侧面反映出数据库实例与磁盘进行数据交互的量大大增加。

 

观察异常时的数据库top10等待事件,排名前两位的等待,占据DB Time超过70%,大量的db time消耗在用户IO以及集群数据请求上

 

由于该库已经关闭了direct path read排名第一的db file scattered read说明数据库处於大量的全表扫描等待中,全表扫描会产生大量的物理读,占用磁盘IO,易造成严重数据库响应等待

 

查看产生物理读sql排名排名第一的产生大量物理读的sql更新语句a0hwv4gh789m9

 

 

观察产生物理读最多的段对象,为分区表TL_B_IBTRADE与更新语句操作对象相同

 

 

Sql原文:

UPDATE TL_B_IBTRADE

   SET BIPSTATUS = :1,

       RECONTAG  = :2,

       IBBFEE    = :3,

       IBBFEEDIR = :4,

       IBAFEE    = :5,

       IBAFEEDIR = :6,

       IBSFEE    = :7,

       IBSFEEDIR = :8

 WHERE IBSYSID = :9

 

该表半小时的采样时间内共执行全表104产生大量物理读,占用磁盘IO造成响应缓慢,经查证,对于sql条件列IBSYSIDTL_B_IBTRADE并无索引,是引致此时全表扫的原因:

 

 

 

最终通过该字段上建立索引,通过INDEX RANGE SCAN索引扫描进行数据访问,执行cost2748K1。执行效率有了极大的提升,数据库响应恢复正常。

3. 故障总结

本次故障根本原因是由于上千万数据量大表TL_B_IBTRADE字段IBSYSID缺少索引,在执行UPDATE语句表进行全表扫描,产生大量物理读,严重影响系统IO性能,导致Oracle实例响应缓慢最终hang

对于此次故障,是由于前期集中资源400M以上大表进行排查,一旦发现全表扫,将重点检查相应字段索引,未能够大范围、全面排查。现经过测试库上sql审核工具的部署应用,以及通过制定的全表扫、笛卡尔积、索引全扫等sql执行规则,监控发现将于1014上线sql进行优化,保证sql执行效率。此外,改进脚本,对生产库中现有100M以上大表进行排查,建立索引最大限度消除全表扫描,保证现有系统sql高效执行

 

 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29337971/viewspace-1816636/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/29337971/viewspace-1816636/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值