|
广州卓勤信息技术有限公司-Oracle数据库优化项目处理 二维码
139
来源:天凯科技-数据库处理案例网址:https://www.dbs-service.com/nd.jsp?id=28#_np=0_578_1 数据库优化报告
一、 性能现状在WIN2008服务器上,目前oracle数据库服务占用大量的IO时间,磁盘繁忙率100%,为了缓解现状,对数据库活动和SQL语句进行分析,下面是分析这个优化过程。 二、 优化分析AWR报告分析:分析:从AWR报告来看,数据库消耗的等待时间主要是direct path read,这种等待事件是全表扫描导致的等待,从SQL层面分析,主要集中在sqlid为7zfa0wc61scp9的SQL,占用了数据库95%的数据库时间和逻辑读,目前主要对这个SQL进行分析优化。 原SQL语句: SELECT a.*, b.customerid FROM SPECIMENREPORT a, specimenhead b where a.status =3 and a.active ='1' and a.barcode = b.barcode and a.reportoption !=1 andrownum<10 and(selectcount(*) from specimenreportdetail h where h.specimenreportid = a.specimenreportid and h.status ='0')>0 AND a.createdate >SYSDATE-60 unionall SELECT c.*, d.customerid FROM SPECIMENREPORT c, specimenhead d, specimenheaddetail e where c.status =3 and c.active ='1' and c.barcode = d.barcode and c.reportoption =1 and e.subbarcode = c.subbarcode and e.status >=130 and e.status <=140 andrownum<10 AND c.createdate >SYSDATE–60 执行计划: 分析:可见该SQL语句,执行计划耗费COST:49753,执行时间0.624秒,分析该SQL,由于该SQL是几个大表的关联查询,我们借助ORACLE的优化建议包进行分析: 记下sql_id直接调用下面PLSQL: Setserveroutput On declare tuning_taskvarchar2(30); begin tuning_task:=dbms_sqltune.create_tuning_task(sql_id => 7zfa0wc61scp9); dbms_output.put_line(tuning_task); end; / 任务_20008 记下该任务名'任务_84' 执行调优包: execdbms_sqltune.execute_tuning_task('任务_84'); 通过查看user_advisor_tasks/dba_advisor_tasks视图可以查看优化任务的当前状态。 SELECTstatus FROM USER_ADVISOR_TASKS WHERE task_name = '任务_84'; 查看调优报告: SELECTDBMS_SQLTUNE.REPORT_TUNING_TASK('任务_84')FROM DUAL; 提炼优化报告具有价值的信息(其他的忽略): 1- SQLProfile Finding (see explain plans section below) -------------------------------------------------------- 为此语句找到了性能更好的执行计划 2。选择以下 SQL 概要文件之一进行实施。
Recommendation (estimated benefit: 39.85%) ------------------------------------------ - 考虑接受推荐的 SQL 概要文件。 executedbms_sqltune.accept_sql_profile(task_name => '任务_84',task_owner=> 'SYS', replace => TRUE);
2- IndexFinding (see explain plans section below) -------------------------------------------------- 通过创建一个或多个索引可以改进此语句的执行计划。
Recommendation (estimated benefit: 71.9%) ----------------------------------------- - 考虑运行访问指导以改进物理方案设计或者创建推荐的索引。如果选择创建推荐的索引,请考虑删除索引 "DRJYLIS"."IDX_SPECIMENREPORTID", 因为它是推荐的索引的前缀。 create index DRJYLIS.IDX$$_00540001 on DRJYLIS.SPECIMENREPORTDETAIL("SPECIMENREPORTID","STATUS"); 分析:可见接收该概要文件(关于概要文件,是一种类似于统计信息的元数据,直接影响优化器对执行计划的判断)和创建索引,可提升50%以上的性能,注:如到迁移到其他环境,可只创建该索引进行优化,至于概要文件暂无需调整。
优化后观察该语句的执行计划和执行时间: 分析:可见,经过索引与概要文件的优化后,该SQL语句的COST从49753下降到23160,执行时间也由0.62下降到0.3以下,优化效果明显。 三、 优化总结1. 本次优化主要是结合AWR报告定位性能问题的SQL语句进行优化,由于该SQL语句影响明显,占据了95%的数据库时间,故重点优化; 2. 利用调用oracle自带的sql_tunning包进行调优,发现出该语句较好的概要文件与索引优化思路; 3. 直接应用该概要文件于索引创建,从性能数据来看,数据库性能提升了一倍。 公司地址:广州市南沙区丰泽东路106号 公司官网:www.dbs-service.com 电话/微信:13926108245 QQ客服:282321952
文章分类:
维护动态
|