空间数据库_查询与优化.docxVIP

  1. 1、本文档共11页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
空间数据库_查询与优化

空间查询与优化一、查询处理概览查询概念:提取需要的数据出来从数据库中提取数据的一系列活动查询步骤:语法分析与翻译(将查询语句变为关系代数表达式)、优化、执行查询优化概念:为关系代数式的计算选择最有效的查询计划的过程。包括1.查询执行计划、2.执行原语(关系代数运算加了如何执行的注释)、3.根据选择算法对数据记录进行操作空间查询优化关键技术:空间索引(数据存取角度,有效读写海量数据)、查询处理算法(提高具体查询执行效率角度)、代价模型(指导查询过程的角度)查询优化过程:1.通过语法分析语翻译器,将查询语句变为一种内部表达2.代数优化进行表达式变化,力图等价但效率更高3.选择执行策略4.选择代价最小的执行计划查询处理优化可行性:1. 可能性:SQL语言与关系代数表达式的非过程化(做什么,而不用说明怎么做)特点2. 可行性:优化器集中了最优秀的程序员的经验与智慧;优化器能对多种策略逐一进行考虑;优化器实时更新优化具有多种可使用信息二、空间操作计算空间操作计算与关系数据运算的区别:1. 空间数据没有公认标准的定义,而关系数据库中的运算很固定2.空间对象的位置和范围在二维或多维上定义,不能自然排序成一维数组3. 数据流读写:空间关系运算代价非常高空间操作基本类型:查询1.更新:空间对象的创建、修改和删除2.空间选择(貌似就是查询):查询出空间对象中满足查询窗口中特定微词的对象。包括点查询()和范围查询()3.空间连接:4.空间聚类:空间操作两步处理:1.过滤步骤-主过滤:最小外包络矩形近似处理,大大减低计算复杂度2.精炼步骤-次过滤:利用精确几何信息求算空间选择查询点查询:SELECT f.name FROM forest_stand WHERE within (:point , f.geometry);范围查询:SELECT f.name FROM forest_stand WHERE intersects (:window, f.geometry);实现方法依赖于数据文件的存储组织查询的三种算法1.未排序无索引的数据文件:穷举法,代价O(n),n是forest_stand存储的页面数2.具有空间索引的数据文件:多采用R树,按照MBR索引,代价O(log n) , n为树的层3.空间填充曲线散列:z排序和Hilbert曲线映射为一维坐标,然后采用B树或B+树索引点查询代价O(log n),范围查询代价为O(log n)+。R+树???一般空间选择(空间谓词问题)1. 组合形式下,空间谓词计算代价高且差别大,处理顺序对总代价影响大(顺序性)2. 考虑空间谓词的选择性与代价以确定顺序:等级=(选择性-1)/特征代价选择性=输出p的集合大小/输入p的集合大小,p是一个谓词特征代价是谓词对单个元组的计算代价,体现CPU的代价输出与输入集合之比,体现了I/O代价3. 按照代价等级的升序依次计算空间谓词空间连接操作算法采用粗过滤-精确判断两步方式例:查找有河流穿过的林分SELECT * From forest-stand F, river R Where overlap(F.Geometry, R.Flood-plain)假定:关系forest-stand占用M个页面,每页PF个元组,关系river占N个页面,每页PR个元组,一对对象执行overlap函数的平均时间为T,算法过程如下:1. 嵌套循环:枚举所有可能的元组队,并用overlap函数进行检查,伪码语言:For all tuple f∈F For all tuple r∈R If overlap( F.Geometry, R.Flood-plain ) then addf ,r to result 未优化的算法:扫描外层关系F,对每个f匹配扫描关系R,则I/O代价为(M*N)*T优化算法,如果有B个可用的缓冲区页面,先读取关系F的B-2页,用剩下的一页缓冲区读取关系R,用另外剩下的缓冲区页回写f,r,I/O代价为(M/(b-2)*N)*T有空间索引的嵌套循环,在Overlap时可以使用索引来判断,提高工作效率2. 分块过滤步骤:分别对F和R中的元组构造K-Pointer元组,由唯一OID和外包络矩形构成,新关系称为Fkp和Rkp。如果新关系都可以装入主存,则采用平面扫描算法处理。否则,将两个关系都分成p块,即F1kp…Fpkp和R1kp… Rpkp。分块约束条件:Fkp和Rkp都位于主存;对于每个 Fkp ,在Rkp 中与之对应的元素位于某个分块Rikp空间聚集-最近邻居算法一般算法:逐个读取查询对象的数据页D;通过一个范围查询,检索D中任意对象到查询对象的距离;如果搜索顺序和剪枝规则选取得当,可以有效减少系统在大

文档评论(0)

haocen + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档