关于Oracle数据库SQL优化系统的研究

时间:2022-10-09 03:28:15

关于Oracle数据库SQL优化系统的研究

【 摘 要 】 随着信息时代的不断发展,人们在工作、学习和生活中越来越离不开数据。大量的数据存储在数据库中,通过SQL语言被应用程序调用,对SQL语句进行优化处理,可以大大提高系统的性能。本文首先分析了oracle数据库的执行过程和查询机制,其次对sql优化系统进行了分析,描述SQL优化规则验证,分析了整个优化系统的流程。本文对于数据库研发人员具有一定的积极作用。

【 关键词 】 Oracle数据库;SQL;优化

The Research of SQL Statement Optimization Based on Oracle Database

Liu Zhan-Jiang Wang Zhi-chao

(China Unicom Chifeng Branch Information Service Center InnerMongolia Chifeng 024000)

【 Abstract 】 With the development of information, people cannot do anything without data in work, study and life. A large amount of data is stored in the database, application software use the SQL language , to optimize the SQL statement, can greatly improve the performance of the system. This paper first analyzes the implementation process and the query mechanism of Oracle database; secondly has carried on the analysis to the optimization of SQL system, describes the SQL optimization rules verification, analyzed the optimization system of process, ensure the operation safety and reliability. This paper has certain positive role for the database developer.

【 Keywords 】 oracle database;sql;optimization

1 引言

当前,数据库系统存储的数据量越来越大,可存储的数据结构越来越复杂,用户与应用系统进行数据的交互,主要是与数据库进行交互操作。数据库系统是应用系统不可缺少的一部分,数据库性能出现问题的时候,其整个应用系统的性能也会受到极大的影响。通常运营商会优先考虑通过升级数据库软硬件平台的方式来提升系统性能,但这无形中会增加整个系统的开销。随着技术的不断发展,SQL语句优化受到人们的关注,在提升数据性能方面起到越来越重要的作用。

2 Oracle 数据库的运行

在实际应用系统的运行中,无论SQL语句的性能如何,最终都是在Oracle数据库中运行,分析Oracle数据库的执行过程和执行机制,实际上就是分析SQL语句执行过程,为SQL语句的优化提供依据。

2.1 Oracle数据库的执行过程

数据库主要用来存放数据,是整个系统的核心。应用系统通过界面操作调用SQL语句给数据库,Oracle数据库收到可执行SQL语句请求的具体执行过程如图1所示。

(1)产生cursor。数据库首先对SQL语句进行解析,首先取得一个HASH值,该值与数据库系统中所执行过SQL语句的HASH值进行比较,查看在高速缓存区中是否存在该值。如果存在,说明该SQL语句已经被执行过了,则直接调用与之匹配的SQL语句即可。否则,则进行接下来的操作。

(2)解析语句。如果高速缓冲区中没有与之匹配的HASH值,说明该语句并没有被执行过,是首次执行。需要对该SQL语句进行语法、表名、字段名等相关内容的检查,查看是否合法。另外,还需要较长的时间检查用户的权限和锁。假如没有问题,则直接将SQL语句存放入系统表中,提供以后的匹配检查工作依据。

(3)选择执行计划。Oracle数据库内部的优化器会自动提供一条代价最小的执行路径,生成其执行计划,并和语句一起放入到高速缓存之中。Oracle数据库的优化器主要有两种类型:基于规则的优化器(RBO)和基于代价的优化器(CBO)。RBO制定了SQL执行的等级,使用者不得改变其设定的等级;CBO是分析每条执行径的代价,是当前应用最广泛的类型。

(4)执行语句。根据选择的执行计划进行数据查询,并将结果及相关参数写入到系统动态视图中。

(5)SQL语句执行结束后,将关闭相关的cursor。

2.2 Oracle数据库查询机制

在执行过程中,执行计划反应了Oracle的查询机制。

(1)表达式转换。一般来说,SQL语句在具体的应用中比较复杂,将复杂的SQL语句拆分为若干等效功能的简单SQL语句。SQL语句主要由Select、From及Where组成,组成一个个可以执行的节点,这些节点可以单独执行彼此之间并不相互进行影响,最终返回明确的结果。Select的组成如图2所示。

(2)根据应用系统的具体应用确定参数来决定生成执行计划的方式。整个执行计划的内容主要有表连接方式、表扫描方式、子句执行顺序等内容,根据参数可以组成不同的执行方式,每种执行方式所花费的代价也是不同的。Oracle数据库的优化器会根据不同的组合方式来确定哪种执行方式更加有效,从而确定最优的执行计划。

(3)执行SQL语句。当连接的数据表的数目多于1个时,数据库的优化器根据执行计划中表的连接方式对其连接,根据相关的参数,返回相对应的结果。

3 SQL优化系统

3.1 SQL优化规则验证

SQL优化系统首先要做到的是根据规则对SQL语句进行优化改写,分析其有效性。SQL优化规则验证主要包括以下几个方面。

(1)SQL语句预处理。该部分的主要目的是将语句格式转化为后台可识别的格式,使Oracle数据库能够产生计划,Oracle主要执行的是SQL语句或SQL命令文件,当采用SQL命令文件执行时,其文件中的语句是一个整体,执行过程中不能中断。

(2)数据库服务器端执行。通过输入优化的SQL语句并将相关的参数传递给Oracle即是Oracle的执行。

(3)输出结果。将产生的结果集以字符串数组的形式交由系统的前台处理。

3.2 SQL优化整体流程

通过Oracle数据库中SQL的执行过程分析,对给定的SQL语句进行优化处理。其主要的流程是:获取低效的SQL语句,获取优化建议,根据相关的优化建议对SQL语句进行优化处理,将优化后语句进行参数比对,如果优化未完成,则根据规则进行优化,否则直接结束。对于优化语句的处理,主要分析低效的SQL语句,时间最长的SQL语句,耗空间最大的SQL语句。

其具体流程如图3所示。

4 结束语

本文对Oracle数据库SQL优化系统进行研究,详细地介绍了Oracle数据库执行的过程、查询机制,以及SQL优化的全过程,为数据库应用系统研发人员在进行应用数据库系统设计、SQL语句编写优化方面提供了有针对性的参考。

参考文献

[1] 袁爱梅.Oracle数据库性能优化研究[D].上海:华东师范大学.2007.

[2] 郭敏,郭靖.Oracle 10g数据库性能优化的研究[J].武汉理工大学学报.2005.27(10):103-105.

[3] 张学义,王观玉,黄隽.基于Oracle数据库SQL查询优化研究[J].制造业自动化,2011,33(1):116-121.

[4] 宋彩霞.Oracle数据库基于索引SQL优化方法的研究与实现[J].计算机工程与设计.2004,25(4):2327-2330.

作者简介:

刘占江(1974-),男,汉族,内蒙古赤峰人,内蒙古工业大学,大学本科,现就职于中国联通赤峰分公司信息化服务中心,从事系统维护和数据库操作。

王志超(1977-),女,蒙古族,内蒙古赤峰人,内蒙古大学,大学本科,现就职于中国联通赤峰分公司信息化服务中心,从事系统维护和数据库操作。

上一篇:计算机信息安全技术与防护浅议 下一篇:物联网安全与信任机制研究