温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

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

发布时间:2020-08-08 04:50:36 来源:ITPUB博客 阅读:198 作者:chenoracle 栏目:关系型数据库

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

环境:

OS:Red Hat Enterprise Linux AS release 4

DB:Oracle 10.2.0.1.0

问题现象:

客户反馈ERP 系统操作缓慢,服务器IO 负载较高;

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

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

问题原因:

(1) 个别 SQL 执行效率较低,由于 SQL 执行计划不合理,造成 SQL 执行过程中的逻辑读和物理读较多,导致服务器 IO 负载较高, ERP 运行缓慢;

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

解决方案:

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

方法:

收集数据不均匀列checkman senderman 的统计直方图;

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

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

问题分析过程:

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

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

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

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

查找IO 负载高的原因:

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

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

Oracle性能优化-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

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

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

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

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

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

通过PLSQL 查看 SQL

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

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

通过NMC 查看 SQL

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

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

SQL 优化:

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

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

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

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

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

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

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

查看数据分布情况,发现senderman checkman 列分布不均匀

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

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

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

senderman checkman 列收集统计直方图

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

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

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

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

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

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

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


向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI