资讯专栏INFORMATION COLUMN

记一次SPA回放缓慢分析

IT那活儿 / 2684人阅读
记一次SPA回放缓慢分析


现象



最近在做一套核心库的的spa回放,共分为3个任务来跑,其中任务1,2跑起来较慢,预估时间要20多少小时。实际跑下来将近24个小时。按照以往经验,这点sql最多几个小时就该跑完的,所以,老司机的撸感告诉自己,应该是出问题了。再次核查统计信息,索引等信息,发现都正常。这说明数据准备这块确实没问题,看来问题应该出现在sql上。只能等spa报告跑出来分析报告了。




分析



主要分析了任务1,2跑出的buffer_gets报告,下面这条语句引起了我的注意。



==>时间上比生产的平均值要高,达到了20s。逻辑读上生产的平均值是一百多万,测试环境中更是达到了两百多万,但返回的行数却很少。很显然这条语句在生产上性能本就存在问题,但可能因调用量少,问题没有凸显出来。



==》这类语句在spa任务1,2中的sql集中存在较多,分别为五千多,六千多。按每个语句20s执行,这类语句执行消耗的时间可估算总和到几十个小时。



==》把这条语句多带带拿出来进行优化,重新收集统计信息,新建索引等方法,执行计划达不到想要的结果,逻辑读依然达到了两百多万。


==》最后只能改写这条语句了,注意到这里使用了hint关键字/*+ORDERED */,该ORDERED提示使Oracle按照表在FROM子句中出现的顺序联接表。怀疑是该hint导致执行计划无法最优。手工把该hint去掉后,测试环境逻辑读降为两千多。




解决方案



  1. 如果要绑定sqlprofile,这一类语句太多了,即使绑定也一定都适用此类语句。


  2. 可以考虑将此类语句从SQL集中去掉,但去掉的话就无法验证是否是这一批语句引起的问题。


  3. 19c环境我们可以使用OPTIMIZER_IGNORE_HINTS参数来忽略sql语句中使用的hint。默认为false,我们在system级别调成true,再跑下spa任务。





优化效果




==》重新跑spa任务后,系统估算任务1,2在2个小时内能跑完,实际跑下来也确认如此,速度提升了近10倍。

==》最新跑出的报告,该语句对比性能提升显著,执行时间在0.02s左右,逻辑读三千左右。




总结



SPA任务跑的慢,说明语句可能存在问题。那么本次的原因是因业务语句使用hint导致,根本上解决此问题还需要和业务侧沟通整改。另外补充下,OPTIMIZER_IGNORE_HINTS参数对现有绑定sqlprofile的语句不影响,这里不再详细阐述。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/130184.html

相关文章

  • 一次 JAVA 的内存泄露分析

    摘要:展示如下场景再现经过分析,最后我们定位到是使用产生的内存泄露问题。下面通过一个,来简单讲下具体内存泄露的原因。这一次的内存泄露问题算是解决了。总结关于内存泄露问题在第一次排查时,往往是有点不知所措的。 记一次 JAVA 的内存泄露分析 摘要:本文属于原创,欢迎转载,转载请保留出处:https://github.com/jasonGeng88/blog 当前环境 jdk == 1.8 ...

    Tecode 评论0 收藏0
  • Webpack下莫名其妙出现的jQuery与报错,一次奇妙的Debug旅程

    摘要:在过程中,发现的报错是在中两个页面的无刷切换中出现的。看向网址等等网址的前缀是,这个是谷歌浏览器插件的前缀。难不成,这个文件是谷歌浏览器插件的于是看向了中间的那一串神秘字符串。 场景重现 项目是一个SPA,使用了Vue+Vue-Router+Webpack+jQuery。报错的场景如下:showImg(http://7xk109.com1.z0.glb.clouddn.com/blog...

    Scliang 评论0 收藏0
  • 一次基于vue的spa多页签实践经验

    摘要:然后类似一样我的命名是可以在页面的任何地方使用,如果你对具体的实现方法有兴趣,欢迎点击本文结尾的链接,去我的仓库上查看。 前言 最近收到一个这样的需求,要求做一个基于 vue 和 element-ui 的通用后台框架页,具体要求如下: 要求通用性高,需要在后期四十多个子项目中使用,所以大部分地方都做成可配置的. 要求做成脚手架的形式.可以 npm 安装 要求实现多页签,并且可以通过浏...

    ispring 评论0 收藏0
  • 一次基于vue的spa多页签实践经验

    摘要:然后类似一样我的命名是可以在页面的任何地方使用,如果你对具体的实现方法有兴趣,欢迎点击本文结尾的链接,去我的仓库上查看。 前言 最近收到一个这样的需求,要求做一个基于 vue 和 element-ui 的通用后台框架页,具体要求如下: 要求通用性高,需要在后期四十多个子项目中使用,所以大部分地方都做成可配置的. 要求做成脚手架的形式.可以 npm 安装 要求实现多页签,并且可以通过浏...

    张迁 评论0 收藏0
  • 记一SPA的SEO历程:Html5 History Api 大显神通!

    摘要:用户体验的需求,完美地保留了瀑布流模态框的阅读模式。不支持的话,就不拦截瀑布流文块的,也就是直接让其跳转。 背景 想当年,我做了一个新媒体网站项目(AIISPO,已下线)。跟普通资讯网站不一样的是,老板要求PC端前台的文章阅读模式一定得是瀑布流+模态框。瀑布流指的是以瀑布流的形式将文章罗列出来,而模态框则指的是点击瀑布流中代表文章的某个文块时,直接在当前页面弹出模态框来显示文章正文。 ...

    Lyux 评论0 收藏0

发表评论

0条评论

IT那活儿

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<