达梦嵌入式数据库子查询的实现和扁平化

达梦嵌入式数据库子查询的实现和扁平化

ID:22031101

大小:3.20 MB

页数:44页

时间:2018-10-26

达梦嵌入式数据库子查询的实现和扁平化_第1页
达梦嵌入式数据库子查询的实现和扁平化_第2页
达梦嵌入式数据库子查询的实现和扁平化_第3页
达梦嵌入式数据库子查询的实现和扁平化_第4页
达梦嵌入式数据库子查询的实现和扁平化_第5页
资源描述:

《达梦嵌入式数据库子查询的实现和扁平化》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、华中科技大学硕士学位论文在关系数据库系统中,多表的连接操作是最难处理和优化的[21-22]。当有很多个关系连接时可以有很多种不同的连接次序,每种连接顺序都表示一种执行计划,因此查询的执行计划的数目会与连接表个数n成阶乘的增长速率,当连接表个数n很大时,使得查找最优的表连接顺序的搜索空间很大,导致连接查询的性能急剧下降。在数据库系统中使用的传统的空间搜索算法或其变形算法都是近乎于穷举的搜索算法[23]。现在的查询优化器常使用随机算法或者启发式搜索算法来处理连接表数目比较多的情况[24-25]。7.并行查询的优化由

2、于企业的数据不断大幅度增长,很多企业有海量的数据,因此高性能的并行查询或分布式查询逐步取代单机查询来对大型数据进行管理和事务处理。因此并行查询的优化也是查询优化的重点,并行查询主要下面三个问题:(1)如何评估并行查询的代价模型。查询的并行不仅要考虑传统的磁盘操作的代价,还要考虑分布式集群的每台机子的物理位置,每台机子的上数据分布情况等[26]。(2)如何改进并行查询的执行计划的查找算法的。并行执行计划的搜索空间比普通的串行查询打很多,通常采用启发式的方法来减少需要考虑的并行执行计划的数目[27]。(3)如何表示

3、并行执行计划。并行执行计划的表示在一定程度上也决定了执行计划是怎样被并行执行的[28],如何表示并行执行计划是一个必须考虑的问题。1.2.3主流嵌入式数据库子查询研究概况目前主流的开源嵌入式数据库主要有:BerkeleyDB和SQLite。1.BerkeleyDBBerkeleyDB是一个开放源码的嵌入式数据库管理程序库,为应用程序提供了可伸缩的、高性能的数据管理服务[29]。它是一个工业级的嵌入式数据库,但在系统架构、对外接口、数据组织方式、访问方法和可定制性等很多方面,与通用的关系数据库有着明显的区别,在S

4、QL层面,BerkeleyDB使用SQLite的查询引擎来操作BerkeleyDB的存储引擎来实现SQL功能,BerkeleyDB由于是基于SQLite的存储引5华中科技大学硕士学位论文擎,因此只支持基本的子查询功能,子查询的优化也只是进行了扁平化处理,没有进行更深入的处理。2.SQLiteSQLite是D.RichardHipp用C语言编写的开源嵌入式数据库引擎,对SQL92标准的支持包括索引、限制、触发和查看,在子查询方面,只支持基本的子查询功能,子查询的优化也只是进行了扁平化处理,没有进行更深入的处理。S

5、QLite不支持外键限制[30],不支持存储过程,分区,分区索引,同步复制和异步复制等功能SQLite的查询引擎的核心是SQLite虚拟机和虚拟机操作码。虚拟机VDBE由多个指令构成的,每个指令又都有一个操作符及四个操作数,这些都是在生成计划的时候形成的,在这个阶段,同时会考虑事务处理、上锁操作、游标管理等,当一个虚拟机形成后,它就可以直接执行了,从第一个指令开始一直按照内部逻辑进行执行,当然可能会有指令间的条件跳转操作。可以看出,虚拟机的指令是一个扁平化的,构造也非常简单,只需要按照不同操作的逻辑执行即可。1

6、.2.3查询重写研究概况查询重写是等价转换规则,将查询转换为等价的效率更高的形式。常用的方法如将效率低的谓词转换为效率高的谓词,消除重复条件等[31-34]。查询重写方法有视图的重写,子查询的合并转换等,本文的查询扁平化也属于查询重写中的一种。查询重写的实现一般有四种:子查询合并,视图重写,条件化简和等价谓词转换。查询重写是基于某些规则的,只有当满足一定的查询重写条件时,才会对查询进行查询重写,否则不会进行查询重写[35-39]。子查询优化是查询重写优化的一种。子查询的合并是也是子查询优化的一种,因为合并子查询

7、技术比较复杂,实现起来比较困难,尤其是In子查询。1.课题主要研究工作本文主要工作具体内容如下:(1)达梦虚拟机机制6华中科技大学硕士学位论文研究达梦虚拟机原理,分析虚拟机操作码的含义,然后添加自行设计的虚拟机操作码,这些添加的操作码主要用在子查询的实现上。(2)子查询的实现和扁平化子查询的实现主要内容有:带In子查询的实现,例如select*frommytablewhereagein(selectagefromstudentwherename=’xx’);带比较运算符的条件子查询的实现,例如select*fr

8、ommytablewhereage>(selectmax(age)fromstudentwherename=’xx’);带Exsit的子查询的实现,例如select*frommytablewhereexsist(select*fromstudentwheremytable.age>student.age)。子查询优化的主要内容有,查询的扁平化,比如selectagefrom(selec

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。