目前,数据库管理系统已经成为数据库技术中的核心技术,同时也是信息化建设中应用最广泛的软件。数据库管理系统经过几个阶段的发展,已经在商业领域得到了迅速和广泛的应用。广泛的应用领域为数据库技术的发展和不断进步提供了发展的原动力,如今的数据库管理技术呈现出标准化、网络化、大型化和智能化的趋势。
【摘要】目前,数据库管理系统已经成为数据库技术中的核心技术,同时也是信息化建设中应用最广泛的软件。如今的数据库管理技术呈现出标准化、网络化、大型化和智能化的趋势。国外数据库管理系统由于研究的时间比较早,其技术比较先进。我国虽然也自主研发了一些数据库管理系统,但是和国外的产品相比还有一定的差距。本文以国产数据库管理系统OSCAR为例,重点阐述了查询优化的一些关键技术和具体实现方法。
【关键词】数据库管理系统,查询优化,选择性因子,关键技术
1引言
我国从宏观政策方面也给数据库管理系统一定的扶持,例如国家的863计划就专门设立了“数据库管理系统及其应用”。本文以国产数据库管理系统OSCAR为例,重点阐述了查询优化的一些关键技术和具体实现方法。
2查询优化关键技术
2.1查询优化的一般准则
查询优化的一般准则能改善一定程度的查询效率,但是并不是改善程度最好,策略最好的。查询优化的一般准则如表1所示。
2.2查询优化的规则系统
神州OSCAR数据库管理系统,应用范围广泛,该数据库主要基于Client/Server的结构,该体系结构又分为物理结构、逻辑结构、进程和内存结构四个方面。同时OSCAR数据库管理系统具有强大的规则系统,该规则系统可以实现不明确试图和试图的更新。例如位于分析器和优化器之间的重写系统,其作用是分析传回的用户查询信息。当重写规则被定义之后,重写系统将对传回的用户查询进行内部操作。
2.3查询优化预处理
查询优化预处理是在真正的优化处理之前进行的操作,主要是为了进行更加高效地查询规划,查询预处理包括对目标列的预处理、条件表达式的预处理和对集合操作的预处理。例如对目标列的预处理首先要补全目标列,然后需要确保表定义中的顺序和查询树的顺序一致。对条件的预处理需要把条件表达式需要把NOT下推或尽可能去掉NOT,或者把条件表达式转换成析取范式或者合取范式。对集合的预处理操作又可分为Except、Union和Intersect等。
2.4查询优化的逻辑优化
逻辑优化的完成主要依靠索引来完成,主要是进行物理上的优化过程,从而使用逻辑优化来完成查询的计算过程。逻辑优化主要包括两个方面。
“AND”的优化过程。在进行优化时第一步是要找出含有“AND”的逻辑表达式,然后查询是否存在可以使用索引的子查询表达式,如果不存在则采用扫描的方式进行逻辑运算。如果存在可以使用索引的子查询表达式,就需要先计算中查询表达式,最后利用查询表达式的运算结果计算其余的查询表达式。
“OR”的优化过程。“OR”的优化过程和“AND”的优化过程基本思路一致,都需要在子查询表达式中找出是否存在可以使用的索引。如果不存在可以使用的索引,当子查询表达式存在多个时,就要调整子查询表达式的运算顺序,从而得到中间结果,把中间结果最后进行“或”计算后得到最后的计算结果。如果存在可以使用的索引,就需要使用索引得到中间计算结果。
3实现数据库管理系统查询优化的算法
算法是实现数据库管理系统查询优化的基础和关键,目前成熟的算法也很多,不同的算法查询优化的效果也更不相同,本文重点介绍两种。3.1存取方法和存储路径分析
查询优化器的一个重要功能就是如果选择检索数据,然后构造良好的执行计划。在OSCAR数据库管理系统中主要采用下面三种存取方法和存储路径。
顺序扫描。顺序扫描需要读取信息表中全部元组,检查每一个元组是否满足WHERE的条件,对于任意一个信息表,需要从头到尾的按照顺序扫描一遍,需要花费的时间相对较长。为了提高扫描效率,可以使用多块读取的方式。
索引扫描。利用建立的多列或单列索引,可以提高检索的效率。当语句访问到的索引是唯一时,数据库管理系统将直接而非表中读出索引列的数值。根据索引扫描方式的不同,又可分为唯一(Unique)和范围(Range)两种类型。
利用TID进行存取。利用TID进行扫描是查找单个记录最快捷的方法,首先给数据库中的每一个元组规定唯一的一个TID,每一个元组的TID包含两个方面的信息,分别是元组在数据块中的位置和数据文件,然后利用这个唯一的TID检索表。
3.2SYSTEM-R代价估算算法分析
SYSTEM-R是代价估算算法的一种,该算法主要是从CPU和I/O的开销上进行考虑的,SYSTEM-R代价估算法的数学计算公式如下:
Cost=P+W*T(公式1-1)
上述公式中,P主要代表I/O的开销。T代表了CPU的开销,其中W是一个权重,表示在一次查询中更重视CPU的开销还是I/O的开销。
对于每一次查询优化时的索引,P和W的数值还要受到选择性因子的限制,选择性因子由于是函数,具有多种可能性,在SYSTEM-R是代价估算算法中,选择性因子被固化在表2中。
4数据库管理系统中查询优化的实现
4.1性能设计
在进行查询优化时可以发现,一些语句仅仅是常数不同,它们具有相同的查询语句。为了提高数据库查询的效率,当把常数指定到一定范围时,就可以把具有相同模式的查询语句进行常数替换。从而实现相同模式的查询语句仅仅做一次语法分析,从而节省了查询时间,为了查询优化,首先需要对查询语句进行缓冲,该部分内容又可分为提取查询计划和保持新的查询计划两个步骤进行。
4.2体系结构设计
SPC的信息流图如图1所示。
从图1可以看出,各个模块直接的信息交换是依靠参数实现的,网络通信库相对与SPC查询缓冲模块而言是数据输入模块,当SPC查询缓冲模块发出查询计划时,查询执行模块就要进行查询。
4.3关键算法
为了提高查询效率,优化查询结果,本文采用hash函数保持语法数和查询语句,如果hash函数设计不好,会造成一些冲突,从而降低hash表的效率。本文设计的一个经验字符串的hash函数如下:
unsignedinthash(char*str)
{
Registerunsignedinth;
Registerunsignedchar*p;
for(h=0,p=(Registerunsignedchar*)str;*p;p++)
h=*p-h+h<<5;
returnh;
}
实践证明,使用该字符串hash函数效能较好,效率较高。
5结束语
为了适应飞速发展的业务需求,未来的数据库管理系统需要更强大的功能,更快的运行速度,为了使我国自主研发的数据库管理系统具有更好的性能,能够缩短和外国主流商业数据库的差距,需要我们从核心技术出发,早日开发出国际一流的产品。
参考文献
[1]张杰敏.有关高级数据库系统中的并发控制问题[J].华北工学院学报,2012(03).
[2]赵艳平.数据库管理系统的组成与发展[J].科技信息.2011(07).
转载请注明来自:http://www.yueqikan.com/jisuanjiyingyonglw/32430.html