热门标签 | HotTags
当前位置:  开发笔记 > 数据库 > 正文

10分钟把永远跑不完的存储过程变为2秒钟存储过程

临近年底,事情特别多,用户都把平时的问题积累到年底解决,导致了本人没到年底都是焦头烂额。前几天,一个用户现场着急打电话找到,说一个过程跑了好久也不跑不完。。。我问:手工执行呢?他说:手工执行也不出结果。有点纳闷儿,但因为不能连接他们的库,

临近年底,事情特别多,用户都把平时的问题积累到年底解决,导致了本人没到年底都是焦头烂额。前几天,一个用户现场着急打电话找到,说一个过程跑了好久也不跑不完。。。我问:手工执行呢?他说:手工执行也不出结果。有点纳闷儿,但因为不能连接他们的库,

临近年底,事情特别多,用户都把平时的问题积累到年底解决,导致了本人没到年底都是焦头烂额。前几天,一个用户现场着急打电话找到,说一个过程跑了好久也不跑不完。。。我问:手工执行呢?他说:手工执行也不出结果。有点纳闷儿,但因为不能连接他们的库,所以,也是不知道具体怎么回事儿。于是就让他们通过系统视图v$session和v$sql等,获取了该过程被卡住的语句,大概如下:

\

又了解了这些表的数据量情况,除了T1仅有几千条数据,其他都是分区表,每张表数据量都上亿条记录。于是,让他们获取了执行计划,如下:

\

看了下该计划,没发现明显的问题。难道因为变量的传入导致了执行计划的改变?带着疑问,让他们又通过v$sql_plan视图获取了该SQL的执行计划,大概如下:

\

哈哈,看到上面的计划,真相大白,现在的数据库真是的,也学会了瞒天过海的招数,锁定原因就好办,原语句修改如下:

\

这下应该没问题了,测试一下,不到1s出结果,修改过程后,运行过程,2s跑完,问题成功解决。


推荐阅读
author-avatar
mobiledu2502854877
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有