您现在的位置是:首页 > 文章详情

记一次生产环境存储过程优化的过程(42秒-->0.06秒)

日期:2020-07-06点击:375

云栖号资讯:【点击查看更多行业资讯
在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来!

概述

在拿awr报告时发现有一个存储过程效率很慢,执行要很长时间,所以在测试环境模拟,开始了我的优化之路..下面写一下我的整体优化步骤和优化后的效果。

1.存储过程如下:
通过awr报告定位到这条问题存储过程。

3E9FEA07_43FC_4c8b_B4E8_1417E88FB87B

2.分析存储过程:
调试后分析大概需要42秒。

76EF8A4C_1708_4374_9269_81E35BB5DB2A

3、查看表数据量和定义
数量级为144万。

80D2E967_2A81_41d7_8F5C_224DDAAB6AC5

4、改写sql查看执行计划
因为update部分耗时比较多,所以考虑改写成select看有没走索引。

select updatetime,sendtootm from Tab_TempDriverScan where ScanWay = '1' and ShipmentNumber = v_shipmentnumber and LPN = idx.LPN and SKU = idx.SKU;

FAA63297_F289_4251_87F7_6F63F00393CE

6、应用bulk collect优化
改写后如下

8591C5D3_39C5_4c33_A772_DDAFF40D3B4E

TYPE Tab_TempDriverScan_rec_type IS RECORD --声明记录类型 ( v_shipmentnumber Tab_TempDriverScan.shipmentnumber%TYPE, v_power_unit Tab_TempDriverScan.power_unit%TYPE, v_IsSend Tab_TempDriverScan.IsSend%TYPE); TYPE nested_Tab_TempDriverScan_type IS TABLE OF Tab_TempDriverScan_rec_type; --声明记录类型变量 Tab_TempDriverScan_tab nested_Tab_TempDriverScan_type; ................... LOOP fetch header1 BULK COLLECT into Tab_TempDriverScan_tab; --应用bulk collect EXIT WHEN header1%NOTFOUND; ........................

B9ABBBFF_66CE_4654_A09E_697C10243811

【云栖号在线课堂】每天都有产品技术专家分享!
课程地址:https://yqh.aliyun.com/zhibo

立即加入社群,与专家面对面,及时了解课程最新动态!
【云栖号在线课堂 社群】https://c.tb.cn/F3.Z8gvnK

原文发布时间:2020-07-07
本文作者::波波说运维
本文来自:“互联网架构师”,了解相关信息可以关注“互联网架构师

原文链接:https://yq.aliyun.com/articles/766932
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章