记一次生产环境存储过程优化的过程(42秒--0.06秒)
作者:波波说运维
toutiao.com/i6680858297873990147/
概述
在拿awr报告时发现有一个存储过程效率很慢,执行要很长时间,所以在测试环境模拟,开始了我的优化之路..下面写一下我的整体优化步骤和优化后的效果。
1.存储过程如下:
通过awr报告定位到这条问题存储过程。
2.分析存储过程:
调试后分析大概需要42秒。
3、查看表数据量和定义
数量级为144万,关注微信公众号:互联网架构师,在后台回复:2T,可以获取我整理的教程,都是干货。
表定义如下:
4、改写sql查看执行计划
因为update部分耗时比较多,所以考虑改写成select看有没走索引。
select updatetime,sendtootm from Tab_TempDriverScanwhere ScanWay = '1' and ShipmentNumber = v_shipmentnumber and LPN = idx.LPN and SKU = idx.SKU;
这里用了索引范围扫描,继续下一步。
5、考虑update开并行
update /*+ parallel(Tab_TempDriverScan,8) */ Tab_TempDriverScan set UpdateTime = SYSDATE, SendToOTM = '1'where ScanWay = '1' and ShipmentNumber = v_shipmentnumber and LPN = idx.LPN and SKU = idx.SKU;
减少了12秒,但是还不是很理想。
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;
...................
LOOPfetch header1 BULK COLLECTinto Tab_TempDriverScan_tab; --应用bulk collectEXIT WHEN header1%NOTFOUND;
........................
测试分析
这时候时间只需要0.06秒,性能获得了很大提升,到这里就剩下后面上生产测试验证的环节了,这步就忽略啦。
关微信公众号:互联网架构师,在后台回复:2T,可以获取我整理的教程,都是干货。
猜你喜欢
1、GitHub 标星 3.2w!史上最全技术人员面试手册!FackBoo发起和总结
2、如何才能成为优秀的架构师?
3、从零开始搭建创业公司后台技术栈
4、程序员一般可以从什么平台接私活?
5、37岁程序员被裁,120天没找到工作,无奈去小公司,结果懵了...
6、滴滴业务中台构建实践,首次曝光
7、不认命,从10年流水线工人,到谷歌上班的程序媛,一位湖南妹子的励志故事
8、15张图看懂瞎忙和高效的区别
9、2T架构师学习资料干货分享
记一次生产环境存储过程优化的过程(42秒--0.06秒)相关推荐
- 性能测试:记一次生产环境性能测试优化实践
1. 前言 这篇文章的主题是记录一次程序的性能优化,在优化的过程中遇到的问题,以及如何去解决的. 为大家提供一个优化的思路,首先要声明的一点是,我的方式不是唯一的,大家在性能优化之路上遇到的问题都绝对 ...
- 记一次生产环境脚本入侵检测与报警案例(检测特定目录被改动,自动报警)
需求 : 特定目录,改动之后,自动报警. 转载来源 : 记一次生产环境脚本入侵检测与报警案例(简易版入侵检测系统) : http://www.safebase.cn/article-259102-1. ...
- 查看webpack版本_webpack小结-生产环境构建优化
刚刚对我们前端项目做了一顿分析优化操作,因为接手时每次构建要花两分钟左右的时间,实在忍受不了,只能动手了.通过这次优化,重新温习了下 webpack 的一些知识.接下来会关于 webpack 展开写几 ...
- Kubernetes 生产环境安装部署 基于 Kubernetes v1.14.0 之 etcd集群
说明:没有明确注明在某台服务器,都是在k8s-operation 工作服务器完成 K8S node 节点数大于2000 节点 k8s-operation 目录规划,工作目录/apps/work/k8s ...
- oracle修改卡顿,记一次生产环境卡顿优化过程:大事务并发回滚
概述 最近生产环境有这么个现象,平时的订单调度只需要2s内可以出结果,但是多个人调度就会卡住,超过15分钟都没有结果出来,有时还会失败然后导致数据不准确. 下面记录一下生产环境卡顿时排查的过程. 1. ...
- CentOS(5.8/6.4)linux生产环境若干优化实战
CentOS系统安装之后并不能立即投入生产环境使用,往往需要先经过我们运维人员的优化才行.在此讲解几点关于Linux系统安装后的基础优化操作.注意:本次优化都是基于CentOS(5.8/6.4). 下 ...
- CentOS(5.8/6.4)linux生产环境若干优化实战------就爱运维
特别说明:本文来自就爱运维.特和所有博友分享.更多优化,请关注www.92yunwei.com后续内容以及分享. CentOS系统安装之后并不能立即投入生产环境使用,往往需要先经过我们运维人员的优化才 ...
- linux ntp时间立即同步命令_记一次生产环境部署NTP服务及配置时间同步
概述 linux服务器在提供服务时,要和其他机器进行请求的交互,实际生产环境中,可能因为时间不同步,导致了服务异常. 下面介绍下怎么部署NTP服务来解决这个问题. ps:强烈吐槽下头条这个新排版功能, ...
- JVM|记一次生产环境 CPU 占用飙高问题解决
目录 1 问题发现与背景 2 运维报警 3 问题定位与解决 (1)第一步,jps 查看 java pid (2)第二步,显示线程列表 ps -mp 42 -o THREAD,tid,time (3)第 ...
- 记一次生产环境java服务mqtt连接线程数过多的处理过程
项目介绍: 本项目是负责发放机设备发放商品的平台.发放机设备是厂商控制,发放机平台是我们公司负责开发和维护.发放机设备和平台是通过mtqq协议通信的. mqtt开发客户端使用的是org.eclipse ...
最新文章
- ZOJ Monthly, June 2014 月赛BCDEFGH题题解
- 每一种创伤,都是一种成熟
- vue双向数据绑定的原理
- Event Loop 其实也就这点事
- QT中的滚动条QScrollArea
- Java集合框架-重构设计
- VMware 6 个少为人知的技巧
- 《软件构架实践》(六) —— 构架编档
- GitHub 40000星!收下这份宇宙最强「程序员装备指南」
- R语言学习历程回顾总结
- HarmonyOS(鸿蒙)——单击事件
- sla java_Grafana中滑动窗口的Prometheus正常运行时间或SLA百分比
- 【51单片机】 利用定时器产生生日快乐歌
- tensorflow-鸢尾花分类(神经网络)
- u盘只有盘符没有容量打不开-U盘无法识别,无法格式化
- FFmpeg获取视频的旋转角度
- 有些jpg图在IE浏览器中打不开
- tensorflow 语义slam_研究《视觉SLAM十四讲从理论到实践第2版》PDF代码+《OpenCV+TensorFlow深度学习与计算机视觉实战》PDF代码笔记...
- 67 step to success
- Stack Overflow使用总结