作者:波波说运维

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. 性能测试:记一次生产环境性能测试优化实践

    1. 前言 这篇文章的主题是记录一次程序的性能优化,在优化的过程中遇到的问题,以及如何去解决的. 为大家提供一个优化的思路,首先要声明的一点是,我的方式不是唯一的,大家在性能优化之路上遇到的问题都绝对 ...

  2. 记一次生产环境脚本入侵检测与报警案例(检测特定目录被改动,自动报警)

    需求 : 特定目录,改动之后,自动报警. 转载来源 : 记一次生产环境脚本入侵检测与报警案例(简易版入侵检测系统) : http://www.safebase.cn/article-259102-1. ...

  3. 查看webpack版本_webpack小结-生产环境构建优化

    刚刚对我们前端项目做了一顿分析优化操作,因为接手时每次构建要花两分钟左右的时间,实在忍受不了,只能动手了.通过这次优化,重新温习了下 webpack 的一些知识.接下来会关于 webpack 展开写几 ...

  4. Kubernetes 生产环境安装部署 基于 Kubernetes v1.14.0 之 etcd集群

    说明:没有明确注明在某台服务器,都是在k8s-operation 工作服务器完成 K8S node 节点数大于2000 节点 k8s-operation 目录规划,工作目录/apps/work/k8s ...

  5. oracle修改卡顿,记一次生产环境卡顿优化过程:大事务并发回滚

    概述 最近生产环境有这么个现象,平时的订单调度只需要2s内可以出结果,但是多个人调度就会卡住,超过15分钟都没有结果出来,有时还会失败然后导致数据不准确. 下面记录一下生产环境卡顿时排查的过程. 1. ...

  6. CentOS(5.8/6.4)linux生产环境若干优化实战

    CentOS系统安装之后并不能立即投入生产环境使用,往往需要先经过我们运维人员的优化才行.在此讲解几点关于Linux系统安装后的基础优化操作.注意:本次优化都是基于CentOS(5.8/6.4). 下 ...

  7. CentOS(5.8/6.4)linux生产环境若干优化实战------就爱运维

    特别说明:本文来自就爱运维.特和所有博友分享.更多优化,请关注www.92yunwei.com后续内容以及分享. CentOS系统安装之后并不能立即投入生产环境使用,往往需要先经过我们运维人员的优化才 ...

  8. linux ntp时间立即同步命令_记一次生产环境部署NTP服务及配置时间同步

    概述 linux服务器在提供服务时,要和其他机器进行请求的交互,实际生产环境中,可能因为时间不同步,导致了服务异常. 下面介绍下怎么部署NTP服务来解决这个问题. ps:强烈吐槽下头条这个新排版功能, ...

  9. JVM|记一次生产环境 CPU 占用飙高问题解决

    目录 1 问题发现与背景 2 运维报警 3 问题定位与解决 (1)第一步,jps 查看 java pid (2)第二步,显示线程列表 ps -mp 42 -o THREAD,tid,time (3)第 ...

  10. 记一次生产环境java服务mqtt连接线程数过多的处理过程

    项目介绍: 本项目是负责发放机设备发放商品的平台.发放机设备是厂商控制,发放机平台是我们公司负责开发和维护.发放机设备和平台是通过mtqq协议通信的. mqtt开发客户端使用的是org.eclipse ...

最新文章

  1. ZOJ Monthly, June 2014 月赛BCDEFGH题题解
  2. 每一种创伤,都是一种成熟
  3. vue双向数据绑定的原理
  4. Event Loop 其实也就这点事
  5. QT中的滚动条QScrollArea
  6. Java集合框架-重构设计
  7. VMware 6 个少为人知的技巧
  8. 《软件构架实践》(六) —— 构架编档
  9. GitHub 40000星!收下这份宇宙最强「程序员装备指南」
  10. R语言学习历程回顾总结
  11. HarmonyOS(鸿蒙)——单击事件
  12. sla java_Grafana中滑动窗口的Prometheus正常运行时间或SLA百分比
  13. 【51单片机】 利用定时器产生生日快乐歌
  14. tensorflow-鸢尾花分类(神经网络)
  15. u盘只有盘符没有容量打不开-U盘无法识别,无法格式化
  16. FFmpeg获取视频的旋转角度
  17. 有些jpg图在IE浏览器中打不开
  18. tensorflow 语义slam_研究《视觉SLAM十四讲从理论到实践第2版》PDF代码+《OpenCV+TensorFlow深度学习与计算机视觉实战》PDF代码笔记...
  19. 67 step to success
  20. Stack Overflow使用总结

热门文章

  1. 3年后,基于mysql控制vsftp的用户认证机制
  2. Seoer,牵起用户与搜索引擎双手的魔术师
  3. 思科的雾计算对物联网有何推助力?
  4. 让你口水不停的最新台湾美食推荐
  5. QApplication、QGuiApplication和QCoreApplication三者的区别与联系
  6. 基于Python3 神经网络的实现
  7. Ajax+PHP快速上手及简单应用
  8. Node.JS——NodeJS引用路径的小问题
  9. Illustrator 教程,如何在 Illustrator 中使用绘图模式?
  10. 如何禁用 7 个完全不必要的设置来优化 Mac?