第5章 查询处理与优化

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

三种处理查询的方法:
处理这些查询还有其他的方法,这和与包含待查询的关系 的文件的组织方式有关。
1.数据未排序且没有索引
唯一的选择就是采用穷举法扫描整个文件并判定每一 条记录是否满足谓词。根据关系的大小,利用两步处理 (过滤加精炼)可能对判定谓词intersect非常有用。扫描 的代价为O(n) 。
3.基于分块的空间归并连接
该算法的过滤步骤: 过滤步骤:给定两个关系F和R:
1)对F和R中的每个元组构造key-pointer元组, key-pointer由元组的唯一OID和空间属性的 MBR组成。新关系称为FKP和RKP 。 2)如果关系FKP和RKP都可以装入主存,那么连接关系 可以用平面扫描算法处理。 3)如果关系太大而不能全部装入主存,则将两个关系 kp F1kp ,…, 和R 1 ,…、kp 。 Fpkp Rp 都分成P块,即
查询优化过程示意图
语法分析器 查询优化器 逻辑转换 SQL语法的抽象数据类型
启发式规则
空间的 非空间的
分解
混合结构规范
动态规划 选择性 计算
系统目录 索引 CPU 缓存
代价函数 空间的 非空间的
合并
5.2.1
逻辑转换
1.语法分析
在查询优化器对查询进行处理之前,必须由语法分 析器来扫描高级声明性语句。语法分析器检查语法 并将语句转换成一个查询树。 在查询树中,叶结点对应着所涉及的关系,而内部 结点对应着组成查询的基本操作。基本操作包括选 择(SELECT)、投影(PROJECT),连接(JOIN)和其他 集合操作,查询处理从叶结点开始自底向上处理, 直到根结点上的操作执行完成。
3.空间填充曲线散列
常见的空间填充曲线有行序Peano曲线和Hilbert曲线, 但它们都不具备所有在多维空间中“位置邻近”的记 录在映射后的范围空间中仍保持邻近的性质。 数据按空间填充曲线“排序”,B树索引就可以用于排 序后的项以加快搜索速度。点查询的代价为O (logbn),范围查询代价大约为
分块:分块必须满足以下两个约束: kp kp 1)对每一个 Fi ,RKP中与之交叠的元素位于 R i 。 F 2)ikp 和R ikp都位于主存。
目录
5.2
查询优化
查询优化器是数据库软件中的一个模块,用于产生 不同的计算计划并确定适当的执行策略。一般的思 想是避免最差的计划而选择一个较好的计划。 查询优化器从系统目录中获得信息,并结合一些启 发式规则和动态规划技术以制定合适的策略。 查询优化器所承担的任务可以分成两部分: 逻辑转换 动态规划
2)精炼步骤:
检查候选集中每个元素的精确几何信息和精确的空间 谓词。通常需要使用CPU密集型的算法。这一步骤可以 在空间数据库以外的某个应用程序(比如GIS中)进行, 这个应用程序用到空间数据库在过滤步骤产生的候选 集。
空间查询的两步算法步骤示意
过滤步骤 查询 加载对象几何信息
精炼步骤
空间索引
如果两个关系都有空间索引(例如R树),可以使用树 匹配策略。树结点包含形如(ref,rect)的项,其中 ref为指向子结点的指针,rect项为子结点的MBR或 空间对象的MBR。 例:两个矩形的集合R1与R2,分别表示两个其空间 对象用R树检索的空间关系。空间谓词为两个矩形的 交:若(r1,r2)满足下列条件,则属于连接关系:
O(logb (n )) 查询结构集的大小 记录在页面上的聚集程 度
5.1.6
空间连接操作算法
连接操作是组合两个关系的基本方式。在实践中的代 价非常昂贵,要求在应用选择条件之前先计算笛卡尔 积。 对于空间数据库,在执行笛卡儿积之前先采用一些特 别的算法。如过滤一精炼两步范型中的过滤步骤。
监测精确的几何集合
候选集
未命中
命中
查询结果
来自百度文库
5.1.4
空间选择技术
有两类主要的空间选择:点查询和范围查询。 SELECT F .Name FROM Forest-Stand F WHERE within(:POINT,F.Geometry)
SELECT F.Name FROM Forest-Stand F WHERE intersects(F.Geometry, :WINDOW)
I/O代价为:
M M N* B 2
有索引的嵌套循环
如果其中一个关系有索引,可以在内层循环中利用有 索引的关系的优点,这样就不需要在每一次迭代时完 全扫描整个内层关系。使用内层关系上的索引来检索 能与存储在主存中的外层关系的元组相匹配的候选元 组,可以取代范围查询。
2.树匹配
第5章 查询处理与优化
在关系数据库中,查询处理和优化可以分为两个步 骤: 1)为每个基本的关系运算符设计并调整算法; 2)利用第一步的信息把高层查询映射为这些基本 关系运算符的组合并进行优化。
主要内容
5.1空间操作计算 5.2查询优化 5.3分布式空间数据库系统 5.4并行空间数据库系统
5.1
例:下面用SQL表达的连接查询: SELECT * FROM Forest-Stand F, River R WHERE overlap(F.Geometry,R.Flood-plain) 假定关系Forest-stand占用M个页面,每页PF个元组, 关系River占用N个页面,每页PR个元组。
2.建立空间索引
可以使用空间索引方法来访问几何数据。通常使用R树 来索引关系的空间属性的MBR,就可以避免扫描整个 文件从而减少系统负载。扫描的代价为O(logn)。 使用索引树时查询的代价依赖于许多因素: 数据矩形的分布 查询窗口的大小 树的高度 构造索引树结点的Packing算法 采用R树的缺点:不同分支的MBR可以交叠,这就可能 导致沿着索引树的不同分支进行搜索。
语法分析器生成的查询树
查询树作为制定执 行计划的基础,连 接操作的代价很大, 代价与所涉及关系 大小的乘积有关。 因此要减少连接操 作所涉及关系的大 小。
2.逻辑转换
将非空间的选择操作下 推。 语法分析器生成的查询 树被转换成等价的查询 树。在枚举出等价树之 后,应用一些启发式规 则将那些显然不是最终 执行策略的候选者过滤 掉。
4)空间聚集:
空间聚集通常都是最近邻居搜索问题的变体,即 给定一个对象o’,找出所有距离o’最近的对象。
NNQ(o') o o'':dist(o'.G,o.G) dist(o'.G,o''.G)
例:找出离路营地最近的河流
5.1.3
对象操作的两步查询处理
空间查询处理会涉及复杂的数据类型,空间操作通常采用 两步算法来高效地处理这些大对象。 1)过滤步骤:在这一步中,空间对象表示为相对简单的近 似,比如MBR。近似检查的结果是真实结果集的超集(候 选集)。 例:找出所有符合下列条件的河流,它们的冲积平原与 SHRINE交叠。 SELECT River.Name FROM River WHERE overlap(River.Flood_plain,:SHRINE) 其中overlap(River.Flood_plain, :SHRINE) 可以替换成 overlap(MBP(River.Flood_Plain),MBR(:SHRINE))。
5.2.2
基于代价的优化:动态规划
动态规划是从一组执行计划中确定最优执行策略的技 术。最优解决方案是根据代价函数推导而来的,代价 最小的计划就是最优计划。 动态规划目标只是选择一个较好的计划而不是最好的 计划。核心在于利用代价函数评估每个执行策略。一 个较好的代价函数必须考虑如下因素: 1)访问代价:从二级存储搜索和传输数据的代价。 2)存储代价:存储查询的执行策略所产生的临时关系 的代价。 3)计算代价:执行主存内运算的CPU代价。 4)通信代价:在客户端与服务器之间传递信息的代价。
选择操作下推并不总是有效!
缺点:虽然有一些确定的启发式规则适用于传统数据 库,但这些规则在空间数据库中可能会产生二义性。 启发式规则“连接和二元操作之前执行选择和投影” 不是在任何条件下都适用了。
结论:我们能做的优 化就是将非空间选择 和投影运算符应该朝 查询树的叶子结点方 向下推。而空间操作 主要通过动态规划优 化。
3)空间连接:
当两个表R和S基于一个空间谓词进行连接时,则该连 接称为空间连接。空间连接的一个变形是地图覆盖 ( map overlay),这些新对象的集合的“边界”由覆 盖操作所指定的非空间属性来决定。 R S o) o R, o' S, (o.G,o'.G) (o, 谓词有:
1.嵌套循环
枚举F和R所有可能的元组对,并用overlap函数相互检查。
forall tuple f∈F forall tuple r∈R if overlap(F.Geom, R.Flood-Plain) then add <f, r> to result 假定有3个内存缓冲区,这样I/O代价为M+M*N,说明该算法 是不可取的,因此嵌套循环算法很少被使用。 改进的办法是有效利用可用的缓冲区页。假设有B个可用的缓冲 区页, (1)首先传输外层关系F的B-2页。 (2)用剩下两个缓冲区中的一页存放内层关系的扫描。 (3)用最后一个缓冲区页回写<f,r>元组,其中f属于 F1 ,...,FB2 }, r R { 页面。
5.1.1
空间操作计算
概述
从查询处理的角度来看,空间数据库与关系数据库之 间有三个主要区别: 1)空间数据库没有固定的运算符集合可以充当查询 计算的基本构件(如空间操作)。 2)空间数据库要处理非常大量的复杂对象。这些对 象具有空间范围,不能自然地排序成一维数组。 3)检测空间谓词需要用到计算量极大的算法,空间 操作的算法既是CPU密集型和I/O密集型,这就使得 设计过程比设计传统数据库更为复杂,在传统数据库 中通常假定I/O代价大大高于CPU代价,并且假定磁 盘访问少的算法就是好的算法。
rect (r1 ) rect(r ) 2
如果IR1和IR2分别为关系R和S的索引树的结点占用 的页面数,那么I/O代价的下限为IR1+IR2。
树匹配算法的规律
(1)非叶结点的矩形能够容纳所有子结点中的矩形的 MBR。 (2)如果两个目录项Er1和Er2不相交,那么其后子树中 的所有数据矩形必然也不相交;如果目录项相交, 那么子树的某个数据矩形则有可能会相交。
Intersect(相交) contains(包含) is_enclosed_by(被包围) distance(距离) northwest(西北) adjacent(邻接) meets(接触) overlap(交叠)
空间连接的示例
例:找出所有交叠的林分和河流冲积平原。用SQL来表 达这个查询的方法如下: SELECT FS.name,FP.name FROM Forest_Stand FS, Floodi_Plain FP WHERE overlap (FS.G, FP.G)
1.系统目录
系统目录维护着代价函数所需的信息,以便设计最 优执行策略。这些信息包括: 每个文件的大小 一个文件的记录数 记录占用的块数 关于索引和索引属性的信息 谓词的选择性和特征代价 在某些情况下,将代价高昂的用户定义函数物化并 索引其函数值以便进行快速检索是非常有用的。
构造查询树示例
例:找出所有面积大于20平方公里并且距离营地小于 50公里的湖泊。 SELECT L.Name FROM Lake L,Facilities Fa WHERE Area (L.Geometry)>20 AND Fa.Name=‘camapground’ AND Distance(Fa.Geometry,L.Geometry)<50
5.1.2
空间操作
空间操作可以分为四组: 1)更新操作:标准数据库操作,例如修改、创建等等。 2)选择操作: 点查询(point query,PQ):给定一个查询点P,找 出所有包含它的空间对象O,其中O.G为对象O的几何 信息。 PQ(p) O p O.G
范围或区域查询(range or regional query, RQ):给定一个查询多边形P,找出所有与之相交的 空间对象O。 PQ(p) G P.G O
相关文档
最新文档