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

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

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          • # 前言一直以来都有人问我,有没有面试题的总结。面试题积累了很多,但没有时间去汇总。这次拿出时间整理一下接口测试相关的面试题,并给出详细参考答案!!!# 第一篇 基础问答(上)### 1. 你测试的接口是如何添加验证点的?接口测试的验证点,也就是接口的断言,通过接口断言,可以实现脚本对程序运行结果的自动验证,输出成功或失败的状态,省去人为判断的过程。对于接口的验证点,我们可以根据任务紧急度和测试目的,粒度上由粗到细,从以下几个角度去依次添加。1) 验证接口响应状态码为200。这是接口测试的最基本要求,响应状态码200代表了该接口能接收请求,能返回响应。如果测试任务比较重,时间比较紧,应该首先针...
            0 1 3604
            分享
          • 目前,许多软件公司组织了一些小型敏捷团队。这些团队可能在不同项目或同一个项目不同部分中工作。我经常参观这些公司,他们有大型开放式办公室、大桌子、帖满了五颜六色便利贴的白板,有时这些便利贴像秋天的落叶落在地板上、太多太多的耳机以及总是不够用的办公室。是不是听起来很熟悉,Spotify?Skype?我对这些地方的熟练敏捷测试有一个建议:一个称为"空降测试员"的角色。这个名字来自精英型消防员"空降消防员"。一个空降测试员是一个训练有素、满怀激情的测试领导者(参考我针对测试领导者所写的"有责任心的测试人员"),他"空降"到...
            0 0 1918
            分享
          • 读者提问:阿常,上节我们讲到测试点不等同于测试用例,想请教你一下,如何把测试点加工成测试用例呢?目前团队中测试人员针对同样的测试点,编写出来的测试用例各不相同,一千个人就有一千个哈姆雷特,108 个测试人员就会有 108 个测试思路,如何保证团队中输出的用例质量呢,有没有比较好的测试设计方法?阿常回答:四步测试设计法。一、建模。即为测试点选择一个适合的模型,将不同测试点划分为四类模型:流程类、参数类、数据类、组合类。1、流程类,通过绘制 “ 流程图 ” 来建立测试模型。2、参数类,通过 “ 输入输出表 ” 来建立测试模型。3、数据类,通过 “ ...
            0 0 1304
            分享
          • 1. Jmeter简介Apache JMeter是一款纯java编写负载功能测试和性能测试开源工具软件。相比Loadrunner而言,JMeter小巧轻便且免费,逐渐成为了主流的性能测试工具,是每个测试人员都必须要掌握的工具之一。本文为JMeter性能测试完整入门篇,从Jmeter下载安装到编写一个完整性能测试脚本、最终执行性能测试并分析性能测试结果。运行环境为Windows 10系统,JDK版本为1.8,JMeter版本为3.3。2. Jmeter安装2.1 JDK安装由于Jmeter是基于java开发,首先需要下载安装JDK (目前JMeter只支持到Java 8,尚不支持 Java 9)...
            12 12 2522
            分享
          •   前言  面试小伙伴们应该都知道,面试官经常会问的问题是,测试环境如何搭建的?有的小伙伴们就会说,开发帮忙搭建的,这样觉得我们测试人员不会的工作都去找开发去做了,今天小编通过在云服务器上搭建禅道环境,带着各位小伙伴亲身体会下如何搭建测试环境。  下载禅道  无论安装什么环境,我们首先都需要将其安装包下载下来,这里直接百度进入到禅道官方网站,然后将其linux安装包进行下载下来。  下载完成后,通过xftp工具进行放入到Linux下面的/opt文件夹下。(如果问为什么放?官方文档建议放入这里)  进入到/opt页面中输入解压命令:tar -zxvf 解压包。  解压完成后,进入到解压的文件中,...
            1 0 860
            分享
      • 51testing软件测试圈微信