18143453325 在线咨询 在线咨询
18143453325 在线咨询
所在位置: 首页 > 营销资讯 > 信息时代 > 关系数据库查询处理(数据库)

关系数据库查询处理(数据库)

时间:2022-12-24 16:30:01 | 来源:信息时代

时间:2022-12-24 16:30:01 来源:信息时代

    关系数据库查询处理 : DBMS接受用户的查询请求(例如SQL查询语句),进行内部处理后将查询结果返回给用户的过程。关系数据库的查询语言是一种非过程化语言,这就使得其查询处理要比层次和网状数据库复杂许多。SQL查询语句的处理过程包括查询编译和查询执行两大部分。如图1所示。其中查询编译包括查询分析、查询检查、查询优化三步(如图2所示):
(1)对SQL查询语句进行词法分析、语法分析和语义检查。词法和语法分析是检查SQL语句是否符合规定的SQL语法,通过后会生成语法分析树。语义检查主要是依据数据字典检查三方面的内容:一是检查关系的使用,即FROM子句中出现的关系是否是该查询所对应模式中的关系或视图,并将关系或视图名转换为内部名。二是检查与解析属性的使用,即在SELECT子句或WHERE子句中出现的各个属性是否是FROM子句中某个关系或视图的属性,并把外部属性名转换为内部名。当FROM子句包含多个关系或视图时,会通过给属性加上它所引用的关系名来解析每个属性,同时检查二义性。三是检查类型,检查所有属性的类型是否与其使用相适应。


图1 SQL查询处理流程



图2 SQL查询的编译过程


(2)根据数据字典中的内容进行查询检查。查询检查的第一步是审核用户的存取权限。对于涉及存取谓词的存取权限,如果它与数据取值有关,则此时不能确定该语句能否执行,这时需要生成相应的动作,以便运行时检查。查询检查还包括视图转换。视图转换可以有两种方法:一种是视图消解法,即在from列表中引用视图的地方,用描述该视图的语法树来替换。该语法树由视图的定义得到。第二种是实体化视图法,即当from列表中引用视图时,生成新的查询,该查询将视图实体化为临时表,在from列表中用到视图的地方,用该临时表替换。
(3) 对查询进行优化。优化分为两步,第一步是代数优化,第二步是物理优化。代数优化是根据关系代数的等价变换规则及一套启发式规则,通过对查询做等价变换,达到优化查询执行的目的。物理优化可以基于代价,也可以基于启发式规则,它根据数据字典中记载的各种统计信息和一套启发式规则,按照一定的优化策略选择一个系统认为是“较好”的存取方案,并把选中的方案描述出来。
通过这三步,一个SQL查询语句被编译成一个查询执行计划,最后由查询执行器去执行。
在查询编译器得到的查询执行计划树中,除了指定操作算法、满足交换律和结合律的操作符的操作顺序、需要的缓冲区大小等执行信息外,还需要规定父子结点间传递中间结果的方式。
子结点向父结点传递中间结果可能以实体化方式,也可能以流水线方式。当内存不足,或父子操作符之间存在天然的阻塞关系时,子结点需要以实体化方式向父结点传递中间结果,即子结点的输出结果将以临时文件形式写到磁盘上,父结点去磁盘上读数据。子结点以流水线方式向父结点传递中间结果时,子结点操作符的输出将写到内存缓冲区中,父结点操作符从缓冲区读数据,父子操作符可以并行执行,而不必等待子操作符执行结束。
查询执行器将查询执行计划树按照父子结点间的实体化关系,以前序遍历的顺序将计划树分成若干棵子树,并按此顺序依次执行各子树。每个子树内部的各结点可以按流水线方式同时执行,子树之间按实体化方式顺序执行。最后根结点的输出即是得到的最终查询结果。

74
73
25
news

版权所有© 亿企邦 1997-2022 保留一切法律许可权利。

为了最佳展示效果,本站不支持IE9及以下版本的浏览器,建议您使用谷歌Chrome浏览器。 点击下载Chrome浏览器
关闭