• 0
  • 0
分享
  • 常用数据库Oracle SQL的软硬解析及其性能讨论——软件测试圈
  • 曼倩诙谐 2022-04-13 10:13:16 字数 1169 阅读 1306 收藏 0

  摘要:随着互联网应用的快速发展,用户的体验要求也在不断提高,软件的性能测试显得尤为重要。

  当项目组想要优化一个性能不合格的软件时,通常会采取性能调优的方法。性能调优是通过调节计算机硬件、操作系统、应用程序三方面之间的关系,实现整个系统的性能最大化,以满足业务需求。Oracle数据库作为应用较为广泛的数据库种类之一,开发测试人员需要掌握Oracle数据库调优的常见场景与方法。

  在Oracle性能调优任务中,测试人员能够通过nmon和Oracle自带的性能分析工具AWR等观测数据库的任务执行情况和资源使用情况。其中,AWR报告中的SQL Statistics项会从几个维度列举系统执行较慢的SQL语句,用于瓶颈SQL定位。导致SQL语句执行时间长的原因有很多种,例如SQL解析时使用硬解析(Hard Parse)方法。下面着重讲一下SQL语句的使用软硬解析的区别。

  在Oracle数据库中有一块区域被称为共享池(Shared Pool),它用于存放缓冲程序数据。已执行过的每一条SQL语句在共享池中都存有解析后的内容,存储这些语句的地方叫高速缓存(Library Cache)。因为内存区域是有限的,所以不能将所有解析后的语句都一直保存,Oracle采用最近最少使用原则(LRU,Least Recently Used)来管理共享池中的对象,只保留那些使用最频繁且最近使用的语句。

  每当Oracle执行一条语句时,首先会进行语法检查(Syntax Check)和语义检查(Semantic Check)。如果这些都通过,就会对SQL语句进行解析(Parse),具体做法是利用内部的哈希算法来取得该SQL的哈希值,检查高速缓存里是否存在该值。如果能成功在高速缓存中找到,就将利用已有的解析树(Parse Tree)与执行计划(Execution Plan),省略优化器的相关工作,这种解析被称为软解析(Soft Parse);反之,Oracle将执行创建解析树、生成执行计划的工作,并将其放入高速缓存以待重用,这种方式称为硬解析。

  硬解析通过优化器创建最优的执行计划时,会根据数据字典中对象的统计信息计算多个执行计划的代价,从而得到一个最优解。这一步涉及大量的计算,会消耗非常多的CPU资源。所以我们在做性能调优时,要尽可能使用软解析,避免硬解析的执行。项目组在改进程序时,倡导功能相同的程序尽量保持一致性,多使用绑定变量,即将变量的数据通过一定的数据访问技术来和相应的实体捆绑在一起,使之成为一个整体。

  本文主要讲了Oracle数据库中SQL解析性能调优的原理和方法,希望能给各位开发测试人员带来帮助。



作者:宋婷婷   

来源:http://www.51testing.com/html/38/n-5842638.html

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          • 三种无效的BugBy Design:设计需求就是这么设计的,无效的BugDuplicate:这个问题别人已经发现,重复的BugNot Repro:无法复现的问题,无效的Bug四种有效的BugFixed:问题被修复External:外部原因(比如浏览器、操作系统、其他第三方软件)造成的问题Postponed:是个问题,发现的太晚了,目前不必修理了,下一个版本讨论是否解决或推迟到以后再解决Won’t?Fix:是个问题,但是不值得修复?,不管它?三维bug定义:bug三维:严重程度,处理优先级,影响范围。Bug严重程度。由Bug的创建者视情况来指定,其中1为最严重的问题,4为最小的问题。一般来讲,1...
            12 12 985
            分享
          •   我是一名转IT测试人,我的专业是化学,去化工厂实习才发现这专业的坑人之处,化学试剂害人不浅,有毒,易燃易爆,实验室经常用丙酮,甲醇,四氯化碳,接触多了,吃个饭都感觉在吃试剂,实属被逼无奈,只能选择转行。  在这期间我迷茫过,纠结过,不知道该选择什么方向,后来我的发小推荐我转行去做软件测试,看他在这行发展的还挺好,我就想着要么我也试试看。然而走上这条路,我才发现完全不懂it的我,学起来也不会太困难。就这样转行测试改变了我的人生轨迹,和一群努力奋斗、满腔热血的同事们一起,燃起了我的斗志,也为自己创造了更好的前途!  努力奋斗!满腔热血!  好了,我发泄完了,文风要突转了::  成功不能复制,但...
            0 0 1483
            分享
          •   Arthas介绍  Arthas是Alibaba开源的Java诊断工具,采用命令行交互模式,提供了丰富的功能,是Java 相关问题排查和性能优化的强大工具。为了明显区分 CPU 耗时和内存占用,分别写了 string 操作的三种方式:String,StringBuffer,StringBuilder。下面将根据这个Demo来对Arthas 进行介绍。  下载  GitHub下载Arthas(https://github.com/alibaba/arthas) 最新Release版本  启动  下载解压后直接用脚本方式“./as.sh”来启动,或者用Java命令“$ java -jar ar...
            14 13 1196
            分享
          • 原文浏览,体验更佳:https://mp.weixin.qq.com/s/ExMfoNT9JtVTwhj2xUrPPg“夜深知雪重,时闻折竹声”。雪折,一种在雪的载荷下,植物(多指树)的躯干或枝条被不断堆积的雪花压断的现象。我的朋友阿聪刚刚经历了人生的第一次“雪折”。阿聪是一个有点聪明且勤奋好学的人,从考入省重点大学起,一直是家长口中别人家的孩子、全村人希望。出身普通家庭的他更懂得本领的重要,大学期间他拼命学习,不放过任何一个机会锻炼自己,毕业后加入国内top3的互联网公司,从事产品设计。刚工作那会,他认为着工作是一直上升的。幻想着只要努力用不了多久,就能升职加薪,迎娶白富美,走上人生巅峰。所...
            1 1 554
            分享
          • 工作久了发现,在互联网这个圈子里,软件测试工程师和产品经理是两个"水分"较大的岗位,在招人的时候如果不擦亮眼睛,稍有不慎就可能会踩雷。前不久面试了两位同学,面试过程有点让我大跌眼镜,为了让大家能避免相同的误区,所以才写一篇文章,分享一些我个人的经验。面试经历之前面试的一位同学简历相当漂亮,看完之后我觉得能力绝对在我之上,大致信息如下:工作时间8年 。在一家做AI的公司,从事算法测试。对持续集成及其工具比较熟悉。自己开发了测试工具平台。面试之前,我还特地的准备了几道算法题,总之是觉得碰上大牛的心态。面试过程大致如下:问:"介绍工作情况,及都做了哪些事情"。...
            0 1 2858
            分享
      • 51testing软件测试圈微信