vlambda博客
学习文章列表

性能测试案例:Oracle重复的SQL

点击蓝色“全栈测试笔记”关注我哟

加个“星标”,阅读我的文章,一起学习提升。


前段时间,在压测过程中发现oracle数据库存在一定的性能问题,通过awr报告,发现硬解析偏多,随后通过oem监控,发现是有重复的sql,这样每个sql都会硬解析,生成执行计划。下面简单演示下这个问题(非实际项目压测过程复现)。


执行sql

可以看到,只有job的值不一样

性能测试案例:Oracle重复的SQL


生成awr报告 

SQL> @?/rdbms/admin/awrrpt.sql

选择报告类型为html,天数输入1

性能测试案例:Oracle重复的SQL

开始快照id和结束快照id分别选择2、3

性能测试案例:Oracle重复的SQL

直接回车,会自动创建一个带快照id文件名的html文件

性能测试案例:Oracle重复的SQL

报告创建成功

性能测试案例:Oracle重复的SQL

html文件

性能测试案例:Oracle重复的SQL

在html报告Report Summary的Load Profile中,发现硬解析(Hard parses)每秒钟次数偏多,这样会造成共享池latch的争用,影响数据库并发处理能力、硬解析还消耗cpu时间,为了进一步定位问题,下面结合oem一起分析。

 

oem监控

登录

性能测试案例:Oracle重复的SQL

主目录 

性能测试案例:Oracle重复的SQL

选择“性能”标签

性能测试案例:Oracle重复的SQL

展示性能监控 性能测试案例:Oracle重复的SQL

选择“重复的SQL”

性能测试案例:Oracle重复的SQL

可以看到我们刚刚执行的sql

性能测试案例:Oracle重复的SQL

5个sql执行的时候都生成了执行计划,最好是只生成一次执行计划,后面复用这个执行计划,我们可以用绑定变量的方式来解决这个问题。


抛砖引玉,欢迎交流;

声明:封面图片来源于网络,如有侵权,请联系删除。


END


性能测试案例:Oracle重复的SQL



星标|在看|留言|转发分享,铁粉


长按二维码关注,第一时间获取干货

性能测试案例:Oracle重复的SQL



测试交流群



性能从0到实战