2019-10-11
一条SQL在测试库执行很快在生产库执行时间超过30分钟疑问
5M问题描述
(1)在业务之前,在测试库进行测试,同样sql,跑完整个批量任务大约几十分钟,而在上线前跑批,发现有一条SQL跑的时间特别长,最后整个业务下来用了七个多小时。
(2)通过对操作系统(CentOS 6.5)以及对数据库性能分析并没有发现CPU高,内存不够情况,IO慢一点,是因为设备不太给力,这个可以接受,但是下面SQL逻辑读超高。
疑问
下面有执行计划以及awr部分统计,平均负载较低数据库。
由于不是很擅长SQL,所以对此SQL执行计划并不是很理解,为什么cost很低,执行时间在生产库会这么长?逻辑读会这么高呢
下面为执行时间特别长sql在特别慢期间执行计划,来源于awr
PLAN_TABLE_OUTPUT ------------------------------------------------------------------------------ SQL_ID dm9z6htt1w2pk -------------------- update zggrzhye y set y.zggrzhye_fzjgbh = (select g.zggrjh_fzjgbh from zggrjh g where y.zggrzhye_grjhbh = g.zggrjh_grjhbh) where exists (select 'x' from TMP_ZGSGJY q where y.zggrzhye_grjhbh = q.ZGSGJY_GRJHBH) and y.zggrzhye_fzjgbh is null and y.zggrzhye_qyjhbh like 'P10004%' Plan hash value: 2684736286 -------------------------------------------------------------------------------------------------------------- | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | -------------------------------------------------------------------------------------------------------------- | 0 | UPDATE STATEMENT | | | | 6 (100)| | | 1 | UPDATE | ZGGRZHYE | | | | | | 2 | NESTED LOOPS | | 1 | 72 | 3 (34)| 00:00:01 | | 3 | NESTED LOOPS | | 1 | 72 | 3 (34)| 00:00:01 | | 4 | SORT UNIQUE | | 1 | 18 | 0 (0)| | | 5 | INDEX FULL SCAN | PK_TMPZGSGJY | 1 | 18 | 0 (0)| | | 6 | INDEX RANGE SCAN | INDEX_ZGGRZHYE_QYJHBH_TZZHBH | 1 | | 1 (0)| 00:00:01 | | 7 | TABLE ACCESS BY INDEX ROWID| ZGGRZHYE | 1 | 54 | 2 (0)| 00:00:01 | | 8 | TABLE ACCESS BY INDEX ROWID | ZGGRJH | 1 | 26 | 2 (0)| 00:00:01 | | 9 | INDEX UNIQUE SCAN | PK_ZGGRJH | 1 | | 1 (0)| 00:00:01 | --------------------------------------------------------------------------------------------------------------
3. awr该SQL情况
4.AWR中逻辑读
收藏
分享
8条回答
默认
最新
回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
墨值悬赏

评论
