记一次生产环境存储过程优化的过程(42秒-->0.06秒)
云栖号资讯:【点击查看更多行业资讯】
在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来!
概述
在拿awr报告时发现有一个存储过程效率很慢,执行要很长时间,所以在测试环境模拟,开始了我的优化之路..下面写一下我的整体优化步骤和优化后的效果。
1.存储过程如下:
通过awr报告定位到这条问题存储过程。
2.分析存储过程:
调试后分析大概需要42秒。
3、查看表数据量和定义
数量级为144万。
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;
6、应用bulk collect优化
改写后如下
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;
........................
【云栖号在线课堂】每天都有产品技术专家分享!
课程地址:https://yqh.aliyun.com/zhibo立即加入社群,与专家面对面,及时了解课程最新动态!
【云栖号在线课堂 社群】https://c.tb.cn/F3.Z8gvnK
原文发布时间:2020-07-07
本文作者::波波说运维
本文来自:“互联网架构师”,了解相关信息可以关注“互联网架构师”





