欢迎光临
我们一直在努力

Oracle性能优化-SQL优化(案例一)



Oracle
性能优化
-SQL
优化
(
案例一
)



环境:

OS:Red Hat Enterprise Linux AS release 4

DB:Oracle 10.2.0.1.0



问题现象:


客户反馈ERP


系统操作缓慢,服务器IO
负载较高;



问题原因:

(1)

个别

SQL
执行效率较低,由于
SQL
执行计划不合理,造成
SQL
执行过程中的逻辑读和物理读较多,导致服务器
IO
负载较高,

ERP

运行缓慢;

(2)
收集统计信息的
JOB
执行时间为工作时间
9:13
,和正常业务产生资源争用;



解决方案:

(1)
优化
SQL
执行效率,减少
SQL
执行过程中产生的逻辑读和物理读,降低服务器
IO
负载;



方法:



收集数据不均匀列checkman

senderman
的统计直方图;

(2)
建议将收集统计信息的
JOB
执行时间更改为非工作时间;



问题分析过程:


可以通过Oracle AWR
报告或者
iostat
命令查看
IO
负载较高:



查找IO
负载高的原因:


通过AWR
报告可以看到消耗资源过多的
SQL
主要来源于以下两个:



一:协同凭证操作对应的SQL



二:用于自动收集统计信息的JOB

DECLARE job BINARY_INTEGER := :job; next_date DATE := :mydate; broken BOOLEAN := FALSE; BEGIN
ANALYZE_TB
; :mydate := next_date; IF broken THEN :b := 1; ELSE :b := 0; END IF; END



通过AWR
查看
SQL



通过PLSQL
查看
SQL



通过NMC
查看
SQL


SQL
优化:


通过绑定变量值以及SQL
执行计划分析
SQL
产生的执行计划不合理,
pub_workflownote
表没有走索引,而是走全表扫描;



查看数据分布情况,发现senderman

checkman
列分布不均匀



senderman

checkman
列收集统计直方图



再次查看SQL
执行计划,发现
pub_workflownote
表可以正常走索引



生成统计直方图后进行了第一次绑定变量窥探,将生成第一个带入参数值的正确执行计划;



欢迎关注我的微信公众号"IT小Chen",共同学习,共同成长!!!






赞(0)
【声明】:本博客不参与任何交易,也非中介,仅记录个人感兴趣的主机测评结果和优惠活动,内容均不作直接、间接、法定、约定的保证。访问本博客请务必遵守有关互联网的相关法律、规定与规则。一旦您访问本博客,即表示您已经知晓并接受了此声明通告。