Oracle数据查询语句执行过程分析

来源 :中国化工贸易 | 被引量 : 0次 | 上传用户:zimomo
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:在IT技术高速发展的今天,数据库技术的地位越来越重要。Oracle以其卓越的性能获得了广泛的应用。成为国内高端数据库市场的主流产品和众多行业信息化系统的主要支柱。本文分析了Oracle数据查询语句执行过程。
  关键词:Oracle 语法分析 SQL
  在IT技术高速发展的今天,数据库技术的地位越来越重要。任何大型信息系统,都需要有数据库管理系统作为支撑。其中,Oracle以其卓越的性能获得了广泛的应用。成为国内高端数据库市场的主流产品和众多行业信息化系统的主要支柱。无论是ERP、CRM、SCM,还是MIS、OA、和电子商务,Oracle数据库都是首选产品之一。如何充分利用Oracle的各种功能来提高数据库的可用性已经成为不断提高Oracle应用水平和提高Oracle数据库应用系统性能的关键。本文分析了Oracle数据查询语句执行过程
  一、SQL查询语句的执行过程
  SQL语句在Oracle中是自动执行的,绝大多数用户不需要关心各个阶段的执行细节。但是,对执行的各个阶段的了解会有助于我们快速找到性能低下的SQL语句,帮助我们书写出更高效的SQL语句,进而解决问题。几乎所有的SQL语句都分为语法分析、执行、读取数据三个大阶段进行处理。
  1.语法分析
  语法分析阶段在SQL语句的执行过程中是最耗时间的阶段,其中要执行的操作较多,可分为以下步骤进行:
  ·创建游标
  游标(cursor)是由程序接口调用自动创建的,不需要开发人员干预。任何的SQL语句都会创建它。在预编译程序(pro*c)和存储过程中创建的游标可能是隐式的,也可能是显式的。
  ·分析语句
  SQL语句从用户进程传送到Oracle分析后.语句本身和分析的信息都被装入到共享SQL区。在这个阶段要执行下列操作以解决一些错误:
  验证SQL语句书写的正确性,类似语法检查。
  在数据字典中查找对比,以验证SQL中表和列等对象定义的合法性。
  在所要求的对象上获取语法分析锁,使得在语句的语法分析过程中不改变对些对象的定义。
  验证为存取所涉及的模式对象所需的权限是否满足。
  决定该语句的最佳执行计划。
  将它装入共享SQL区。
  对分布的语句而言,把语句的全部或部分路由到包含所涉及数据的远程节点。
  以上任何一步出现错误,都将导致语句报错,中止执行。语法分析需要花费较多的资源,如果在共享池中不存在等价的SQL语句时,就会对SQL语句进行语法分析,对于相同的语句不管要执行多少次,只要该语句还在共享SQL区中,就可以不用重新分析而直接使用其对应的执行计划对数据进行存取。要提高语句的共享程度,主要通过绑定变量(Bind Variable)实现.另外,对于查询语句,因为涉及到返回一行或多行结果集,我们可以采用批量Fetch数据的方式降低网络开销,提高查询效率。
  ·定义查询的输出数据
  指定与查询出的列值对应的接收变量的位置、大小和数据类型。Oracle会将接收变量的类型与对应的列类型相比较以自动实现数据类型的转换。
  2.执行语句
  在Oracle得到所有需要的信息与资源后,就可以真正运行SQL语句了。对于SELECT语句或INSERT语句,因为没有发生数据改变,所以不需要锁定任何行,但对于UPDATE或DELETE语句,这些语句影响到的所有行都将被锁定,防止用户提交或回滚之前,别的用户对这些数据进行修改,保证数据的一致性。
  3.读取数据
  符合条件的行数据被取出来,每个后续的存取操作检索结果集中的下一行数据,直到最后一行被取出来。可以采用批量Fetch的方式优化性能。SQL语句处理的最后一步就是关闭游标。
  二、Oracle查询优化器
  SQL是一种非过程化的语言,用户只需要发出取出数据的命令,对于数据的取出方式,比如是通过索引还是全表扫描,则由数据库的优化器决定。Oracle的优化器用来决定SQL访问数据的有效路径,使语句执行所需要的开销最小。在Oracle的发展过程中,~共开发过两类优化器:基于规则的优化器和基于成本的优化器。它们的不同之处主要在于取得代价的方法与衡量代价的大小不同。
  1、基于规则优化器(RBO)
  基于规则优化器检查SQL语句语法,使用所引用对象结构的数据字典信息,然后采用一组规则,确定最佳计划。基于规则优化器用15种不同访问路径和相关等级确定执行计划。由于低等级的访问路径比高等级的访问路径快,所以当有多个访问路径时,优化器采用最低等级的访问路径。具体执行时,基于规则优化器采用Where子句中的谓词来确定访问路径,如果谓词中的某一列上有索引,那么优化器将采用这个索引访问表,而不考虑其他因素。另外,基于规则优化器在From子句中按从右到左来决定表的访问顺序,由于大多数查询都将受益于可以返回少量行或只返回一行的有选择或唯一判定联合条件的使用。RBO使用固定的排列顺序,因此当使用RBO时,就必须在From子句中正确排列表的顺序。
  2、基于成本优化器(CBO)
  基于成本的优化方法是用一个集成到数据库内核中的成本估算器来估算每个可能的执行计划需要的成本,成本的大小是根据执行该SQL语句的资源使用量(CPU和I/O)与运行时间等因素估算得到的。优化器选择成本最小的一个执行计划作为SQL语句的真正执行计划。使用基于成本优化器时,需要有表和索引的分析数据作为基础数据,这些分析数据用ANALYZE命令或DBMS STATS包进行收集。在Oracle 9i中,如果没有统计数据,则会使用缺省值,这可能会导致优化器选择错误的执行计划,影响查询性能。Oracle l0g以后,分析工作变成自动的了,减轻了DBA的负担,不过在一些特殊情况下,也需要进行一些手工分析。随着Oracle版本的不断提高,基于成本优化器已经足够强大与智能,OracleI0g以后,Oracle自己开发的应用系统也使用基于成本优化器了。一般来说,应当使用基于成本优化器而不用基于规则优化器。
  三、结论
  总之,Oracle要实现许多步骤才能完成SQL查询语句的执行,优化器将这些步骤组合在一起就称为SQL查询语句的执行计划。从执行计划中我们可以看出数据库是如何执行查询语句,判断出查询语句的执行是否高效,从而制定查询的优化方案。
  参考文献
  [1]蔡柳萍. SQL查询语句的优化[J]. 经营管理者. 2011(01)
  [2]王韦,王颖. 基于对象的RDBS查询优化研究[J]. 中国电力教育. 2008(S1)
  [3]胡皓. SQL查询语句优化研究[J]. 舰船电子对抗. 2007(04)
  [4]李可可. 浅析Oracle数据库的性能优化方法[J]. 硅谷. 2011(02)
其他文献
好氧颗粒污泥是在水流剪切力作用下,由微生物凝聚而形成的颗粒状聚集体,因其具有较好的生物活性、沉淀性能、耐有机负荷冲击、对污染物质较强的去除能力,在污(废)水处理领域
表没食子儿茶素没食子酸酯(EGCG)是茶多酚中含量最高的儿茶素单体,具有非常强的抗氧化性和配位性能。本文通过研究水溶液中EGCG和EGCG-Fe配合物对六价铬的还原性能及其反应机
当前的农村点源污染与面源污染共存,并有不断加重的趋势,为了做好农村环境保护,农村环境规划的编制和实施工作越来越受到重视。但是由于此项工作近年来才逐步引起人们的关注,
针对现有串扰减小方法效果有限、成本高、资源消耗多等问题,提出了一种基于信道传输矩阵逆矩阵减小微带线间串扰的方法。该方法通过将信道传输矩阵化为单位阵来实现串扰减小
摘要:随着计算机技术的发展,数据库的应用越来越广泛,其在油田数据管理的应用也越来越受到重视。本文介绍了Oracle数据库的系统特点及结构组成,概述了其性能优化的内容,研究了Oracle数据库的常用技术在油田数据管理方面的应用。  关键词:Oracle数据库 性能优化 技术应用  1.绪论  数据库技术是计算机科学技术发展最快的、应用最为广泛的领域之一。在信息管理自动化程度日益提高的今天,数据库技术
针对无源异类传感器接收的信号常在持续时间上无交集的情况,提出了一种基于出现-消失时间序列的信号关联算法。首先将时间序列抽象成一个M/G/1排队模型,随后推导了闲期分布,
我国有丰富的稠油资源,稠油油田开发过程中,注汽锅炉系统能耗占总能耗的绝大部分,因此提高注汽锅炉系统热效率是节能降耗、降本增效的重要研究方向。本文主要论述了提高油田注汽
LoRa是目前工业界大力推广的一种低功耗广域网技术(LPWAN)技术,但其中的核心调制技术专利由美国Semtech公司拥有,其技术细节没有被公开。基于此,针对LoRa的调制解调技术原理进行详细的数学描述,并给出了具体的调制解调算法。同时,对LoRa调制的性能进行了高斯白噪声信道及多径衰落信道下的仿真比较,仿真结果验证了LoRa调制技术在低速远距离通信场景中的优越性。
频谱感知是通信系统抗干扰和智能化的关键能力.针对认知无线电系统窄带频谱感知技术受制于数模转换器件的发展水平,难以解决认知无线电系统宽带、实时频谱感知的问题,提出一