暂无图片
分享
疏浚
2019-03-04
sql语句执行时间长,执行了1个多月了。
各位专家老师:

SELECT *
  FROM "GLFUNCA"
 WHERE "RCLNT" = :a0
   AND "RLDNR" = :a1
   AND "POPER" = :a2
   AND "RBUKRS" = :a3
   AND "RACCT" = :a4
   AND "RYEAR" = :a5

我们的数据库系统中这个sql语句执行了一个多月,一直还在执行,没有任何报错,表的记录有1.8亿多条,同时执行了两个这样的查询,是做sap归档时归档程序自动执行的。不知道是不是出了什么问题。请专家指导一下,第一次提问,不知道还有什么规矩,不周的地方请包涵,谢谢!

收藏
分享
9条回答
默认
最新
疏浚
暂无图片 评论
暂无图片 有用 0
Moone

AWR控制你这个SQL  1天多实际执行了3,293次,比没有发现执行1个多月。请问你这个从哪里看到的?如果是效率不好,可以提取awrsqrpt进行执行计划的分析。

暂无图片 评论
暂无图片 有用 0
Kamus

image.png


该SQL在AWR历时的33个小时里,一共执行了3293次,平均每次执行时间72秒,占据了将近20%的数据库活动时间,确实是你这个系统中最消耗资源的SQL。

但是如Moone所说,并没有显示出这个SQL一直运行了一个多月。


image.png


该SQL在物理读排名中位居第2,1.8亿条记录即使是创建了索引,如果是索引范围扫描,那么也确实需要消耗比较大的物理读。

因此如果该SQL每次返回的记录并不是几条,而是十几条或者数百条,那么可能较难对其进行优化。

暂无图片 评论
暂无图片 有用 0
疏浚

好的,谢谢两位专家老师的回复。我再观察一段时间。

暂无图片 评论
暂无图片 有用 0
疏浚

Moone老师,我是在SAP层面和toad工具中看到数据库一直在跑这个sql语句,所以认为这个语句跑了很长时间都没跑完。没认真分析awr报告。

暂无图片 评论
暂无图片 有用 0
罗海雄

其实很简单,你经常看到这个SQL, 但其实每次都是新的SQL在执行。就像你这一个月经常路上看到一辆车,不能说明它就在路上开了一个月对不对

暂无图片 评论
暂无图片 有用 0
罗海雄

另外,从AWR中可以发现,每次执行79秒,其中5秒是CPU, 每次逻辑读80550是,物理读是69746,命中率相当低。每个I/O消耗大概是 (79000-5000)/69746=1ms, IO性能还可以。可以看看执行计划的情况,存在索引选择度不够好的可能性

暂无图片 评论
暂无图片 有用 0
疏浚

是的,收益匪浅,谢谢三位专家的指点。

暂无图片 评论
暂无图片 有用 0
疏浚
问题已关闭: 问题已经得到解决
暂无图片 评论
暂无图片 有用 0
回答交流
提交
问题信息
请登录之后查看
附件列表
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
暂无图片墨值悬赏