标题 | 关于数据库管理系统中的查询优化设计研究 |
范文 | 申超群 摘 要 数据库管理系统应用非常广泛,尤其在信息化建设中的应用尤为突出。随着科技的进步,目前的数据库发展呈现出智能化、网络化、大型化以及标准化的特点,这也是未来的发展趋势,数据库系统的发展不仅带动了我国科技的发展,更加带动了我国经济的发展。国外在数据库的研究方面着手较早,研究的时间较长,所以在技术方面远比我们国内要先进。数据库管理系统国内也有研究,但是相比于国外依然存在一定的差距。本文将国产数据库管理系统OSCAR作为研究对象,并对查询优化一些关键技术进行分析和研究,最后提出具体实现方案,旨在为我国相关领域提供参考和支持。 关键词 数据库管理系统;查询及优化;选择性因子;核心技术 中图分类号 TP3 文献标识码 A 文章编号 1674-6708(2016)166-0092-02 数据库管理系统应用非常广泛,尤其在信息化建设中的应用尤为突出。数据库系统经过长期的发展,在商业领域中的应用非常广泛。就我国而言,数据库管理系统一直受到国家宏观政策的扶持,如我国在863计划当中,根据实际情况设置了“数据库管理系统及其应用”。随着社会经济不断发展,各领域对技术提出了更高要求。因此加强对该问题的研究具有非常重要的现实意义,能够帮助相关主体了解更多关键技术,并掌握其实现方法。 1 查询优化关键技术 1.1 查询优化的一般准则 查询的效率在一定程度上可以通过查询优化的方法得到改善,然而无论是从策略上考虑,还是从改善程度方面考虑,这都不是最好的办法。查询优化一般准则主要有5个部分:准则一,选择运算尽可能优先的进行。这一准则能够在一定程度上节约时间成本。准则二,针对实践执行及连接等进行预处理,一般来说,在实践中,预处理可以采取两种方式,分排序合并及索引两种连接。准则三,将选择运算及投影运算同时进行。这一原则的遵循能够减少对关系的重复扫描。准则四,提取出公共子表达式。如果从外部读入子表达式速度较快,可以将其作为公共表达式,以便提高表达有效性。准则五,建立在笛卡尔积同基础之上,重构连接运算。在具体应用过程中,借助上述准则,能够有效节省更多时间,毋庸置疑效率也就快了。 1.2 查询优化规则系统 针对研究对象来说,其自身具有较为广泛的应用范围。综合来看,该系统Client/Server的结构为基础运行。整个体系结构由内存、逻辑及物理等部分构成。该数据库管理系统除了应用广泛之外在规则系统方面也相当强大。规则系统的使用,不仅能够实现对不明确试图的观察,且能够对试图进行相应的处理。比如重写系统,该系统存在于优化器和分解器之间的,系统传回的用户查询信息主要就是通过该系统来完成分析的。重写规则后,系统能够对传回的用户在内部进行相应的操作,满足用户需求。 1.3 查询优化预处理 一般在真正进行优化处理之前还有一项操作是需要完成的,那就是查询优化处理,这一处理放在这里的主要目的是让查询规划的效果更高。具体的查询优化处理主要包括3个方面,对集合操作的预处理、对条件表达式的预处理和对目标列的预处理。在进行目标列的预处理之前第一步要做的是将目标列补充完全,同时还应该保证查询树的顺序同表定义中的顺序保持一致性。在进行条件的预处理之前应该将条件表达式转变成析取范式或者合取范式,也可以将条件表达式NOT下推或者是想办法将NOT去除。在进行集合的预处理还有很多分类,如Intersect、Union、Except等。 1.4 查询优化的逻辑优化 逻辑优化其本质是一个物理层次的优化过程,主要是通过索引来进行的,最后,在逻辑优化基础上,完成查询计算全过程。逻辑优化体现在两个方面,一是“AND”;二是“OR”优化过程。 “AND”的优化过程。在进行“AND”的优化之前首先要完成的是将含有“AND”的逻辑表达式找出来,第二步要做的是通过查询,以此来判断我们能够使用的子查询表达式是否真实存在。如果没有,可以应用扫描模式完成逻辑运算。如果有,可以将索引的子查询表达式应用,将查询表达式计算出来,并充分利用运算结果,计算出剩余查询表达式。最终实现对整个逻辑的优化目标。 相比较来看,“OR”较“AND”比较来看,二者存在较强的一致性。详细来说,两种优化过程必须要做的都是需要在子查询表达式中找出是否存在可以使用的索引。若没有,而有多个子查询表达式的情况下,则为了得到中间结果,自查询表达式运算顺序需要经过相应的调整,并对中间结果进行相应的调整,最终才能够获取相应的结果。若有,那么中间计算结果可以通过索引的运用来获取。 2 实现数据库管理系统查询优化的算法 在数据库管理系统查询优化的实现过程中最基础、最关键的就是算法。在实践应用过程中,使用的算法不同,那么对应的查询优化结果也会有所差别,具有较强的针对性。本文主要从两个方面进行介绍。 2.1 存取方法和存储路径分析 检索数据的选择和执行计划的构造,建立在查询优化设备基础之上。针对OSCAR系统来安,其一般有顺序扫描、索引扫描以及利用TID进行存取3种类型。 其中针对顺序扫描来看,系统在运行中,会先对信息表中涉及的所有元组进行相应的处理,然后对每个元组进行检查,查看是否满足WHERE条件。不仅如此,还需要对每个信息表进行系统化扫描处理,基于此,全面扫描耗时相对较长。因此,为了能够提高扫描有效性,我们可以采取多块读取方法,更快地获取相应的结果。而针对索引扫描而言,该类型扫描更多的是为了检索有效性,采取对多列、单列索引的构建。在语句访问到索引具有唯一性时,系统可以直接将非表中的索引列数值读取出来。根据扫描方式具有的差异性来看,在执行中,可以采取唯一、范围两类。 利用TID进行存取。在进行单个记录的查询时,这种扫描方式是最方便和快捷的,第一步要做的是对数据库中的每一个元组规定唯一的TID,再利用这个TID检索表。其中每一个元组的TID的主要信息分为数据文件和元祖存在于数据库中的具体位置两方面。 2.2 SYSTEM-R代价估算算法分析 SYSTEM-R是一种代价估算算法,CPU和I/O的开销是这种算法考虑的重点,Cost=P+W*T公式是这种算法的数学表达式。其中W表示权重,P代表I/O开销,而T 代表的是CPU的开销。这个式子可以解释为在一次的查询中CPU和I/O的开销的重视度问题。 P和W的数值在每一次的查询优化时的索引中都是不一样的,其原因主要是选择因子的存在。当然我们在算法SYSTEM-R代价估算中,可以将其分为三种情况:其一,当r.field=value时,而选择因子为I/(定义在r.field上的索引表中的T);其二,当r.field>value时,选择因字固化为(r.field的最大值-value)/(r.field的最大值r.field的最小值);其三,当r.field 3.1 性能设计 查询优化是一项综合性工作,很多语句之间的差异仅仅是常数变化,而查询语句却是一致的。因此出于提高数据库查询有效性的考虑,可以将常数指定到某一范围当中,针对具有同一查询语句的语句进行常数更换。而针对同一模式的语句,在实践中,仅需要采取一次语法分析,便能够节省很多实践。在查询优化过程中,第一步要做的是缓冲查询语句。其中不仅要获取查询对应的计划,且需要将新的查询计划保持好,以此来提高系统运行有效性。 3.2 体系结构设计 数据库体系的机构主要有3个环节,第一环节包括网络通信库、查询计划优化模块和DBA命令处理模块3个部分;第二环节是SPC查询缓冲模块;第三环节是查询执行模块。每个环节中的模块进行信息交换都是通过参数来完成的,例如在SPC查询缓冲模块发出查询计划后,查询执行模块将会进入到运行模式当中。 3.3 关键算法 为了能够进一步提升查询有效性,实现对查询结果的调整和优化。本文引入hash函数,保持语法数、查询语句。该函数更具灵活性,能够直接与对应的表保持一致。通过对实践结果观察能够发现,利用该字符串,不仅能够促使该函数效能达到最佳状态,且查询系统整体效率也得到了优化。因此,可以使用hash函数,以此来提高查询有效性,为用户提供更加优质的服务。 4 结论 在业务需求显示出越来越强劲的势头下,数据库管理系统在未来的发展过程中必须要有更快的运行速度和更为强大的功能。虽然我国自主研发的数据库管理系统与国外的差距依然很大,但是我们应该从核心技术出发,深入研究,尽可能缩小与国际一流水平之间的差距,甚至赶超国际一流水平,逐渐使数据库管理系统世界化、全球化。 参考文献 [1]张杰敏.有关高级数据库系统中的并发控制问题[J].华北工学院学报,2012(3):204-206. [2]赵艳平.数据库管理系统的组成与发展[J].科技信息,2011(7):73. |
随便看 |
|
科学优质学术资源、百科知识分享平台,免费提供知识科普、生活经验分享、中外学术论文、各类范文、学术文献、教学资料、学术期刊、会议、报纸、杂志、工具书等各类资源检索、在线阅读和软件app下载服务。