[发明专利]一种基于分组的全局多查询优化方法有效
| 申请号: | 201710242819.2 | 申请日: | 2017-04-14 |
| 公开(公告)号: | CN107133281B | 公开(公告)日: | 2020-12-15 |
| 发明(设计)人: | 吴勇;陈岭;林言;钟宏泽 | 申请(专利权)人: | 浙江鸿程计算机系统有限公司 |
| 主分类号: | G06F16/2453 | 分类号: | G06F16/2453;G06F16/2452 |
| 代理公司: | 杭州之江专利事务所(普通合伙) 33216 | 代理人: | 张慧英 |
| 地址: | 310053 浙江省*** | 国省代码: | 浙江;33 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 一种 基于 分组 全局 查询 优化 方法 | ||
1.一种基于分组的全局多查询优化方法,其特征在于,包括多查询建模阶段和多查询优化阶段,如下所示:
1)多查询建模阶段:对查询语句进行签名计算,得到每一个查询的精简化表示,记为签名;具体步骤如下:
1.1)对给定的n条查询语句Q={q1,q2,...,qn}进行解析,采用JFlex进行词法解析得到词法解析结果,采用CUP对词法解析结果进行语法解析;
1.2)采用基于火山模型的查询优化器对n条查询语句Q={q1,q2,...,qn}进行计划枚举,得到每一个查询语句qi对应的j个计划Pi={pi1,pi2,...,pij};
1.3)遍历计划集合Pi={pi1,pi2,...,pij}中的每一个计划pij,并进行任务切分,得到每一个计划pij对应的k个任务Tij={tij1,tij2,...,tijk};
1.4)通过五元组签名来表示任务,记为任务签名,进而通过任务与计划、计划与查询之间的关系来表示计划与查询,分别记为计划签名和查询签名;具体如下:
1.4.1)输入查询计划的集合,每个查询计划构成的树按照规则被划分为若干子树,每个子树是一个任务;
1.4.2)对任务中的节点进行后续遍历,为每一个任务计算对应签名,并判断该任务是否在之前的计算过程中出现过;若出现过,则直接使用对应的任务签名,否则为该任务创建新的任务ID,并计算任务签名;
1.4.3)签名是一个五元组Ge=[Sign;De;Se;Be;torder],其中Sign代表标识,包括该任务归属的查询ID、计划ID和该任务的ID;De代表任务中的数据表集合;Se代表任务中的选择谓词集合;Be代表任务中的非选择谓词集合;torder代表在后续遍历计划时该任务的顺序编号;
1.4.4)初始化Sign和torder的值,Sign根据当前处理任务归属的查询ID、计划ID和该任务的ID决定,所有ID均是从0开始自增的整数;torder是在后续遍历计划时该任务的顺序编号,编号是从0开始自增的整数;
1.4.5)根据任务内的不同操作计算对应签名:若节点类型为扫描操作节点时,将其对应的数据表添加到De中,将其对应的选择谓词添加到Se中;若节点类型为连接操作节点、聚合操作节点或者排序操作节点时,将其对应的谓词添加到Be中;若节点类型为数据传输操作节点,跳过并继续;
1.4.6)依次构建计划签名和查询签名:通过计划与任务的一对多关系,将归属于同一计划的任务签名进行组合,得到计划签名pije={tij1e,tij2e,...,tijke};通过查询与计划的一对多关系,将归属于同一查询的计划签名进行组合,得到查询签名qie={pi1e,pi2e,...,pije};
2)多查询优化阶段:根据签名对查询语句进行分组,建立查询组;并采用基于启发式算法的多查询优化算法,对每一分组内的查询计划进行代价估算来进行计划选择,并将每一分组选择的计划进行合并,得到多个全局计划;具体步骤如下:
2.1)初始化查询所在的分组:对给定的n条查询语句Q={q1,q2,...,qn},将每个查询分为一组,得到n个分组g1,g2,...,gn;
2.2)建立任务到查询的映射关系,为任务ti所包含的所有mi个查询建立集合并可得到k个不同的查询集合构成的集合Qg={Q1,Q2,...,Qk};
2.3)根据映射关系,利用基于路径压缩的并查集算法进行分组,对n个查询Q={q1,q2,...,qn}所代表的n个分组g1,g2,...,gn进行合并;
2.4)为步骤2.3)合并得到的每一个分组创建查询集合容器,并将同组的多个查询逐一加入,得到d个查询分组G={g1,g2,...,gd};
2.5)根据分组结果,利用HA算法为每一组查询进行计划选择:对于每一个分组g1,g2,...,gd,输入所有查询,通过对搜索空间内的计划进行代价估算来选择计划,并引入上界函数h对搜索空间进行剪枝;所述步骤2.5)利用HA算法进行计划选择的方法如下:
2.5.1)初始化用于代价估算的信息,通过读取配置文件中的各项参数,包括磁盘速率、内存大小;
2.5.2)在输入查询包含的所有任务中查找等价任务集合,等价任务的签名中包含相同任务的ID;
2.5.3)初始化代价上界:通过计算每一个任务的代价,累加获得每一个计划的代价,通过获得对每一个查询所有计划中代价最小的计划,即最优计划,对“最优计划”的代价进行累和,得到初始上界upperbound;
2.5.4)递归搜索,通过启发式代价估算来为每一个查询选择计划:为了让HA算法算法快速收敛,引入一个上界函数h对搜索空间进行剪枝,公式如下:
其中,nq表示包含任务t的查询数量;next是一个函数,可以求得在状态s下需要进行计划选择的查询编号;cost是一个代价函数,通过磁盘读取页数来对任务进行代价估算,通过对任务代价求和来对计划进行代价估算;est_cost函数用于计算未选计划的估计代价;函数通过将任务的代价cost(t)平分到每一个包含该任务的查询,获得该任务的估计代价,进而通过求和获得计划的估计代价;
2.5.5)得到为每一个分组内所有查询选择的计划集合,即
2.6)根据步骤2.5)的结果,对每一分组选择的计划进行自底向上的任务合并:将ci个计划按照其包含公共的任务签名中的torder进行升序排列,并依次将各计划与全局计划合并。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于浙江鸿程计算机系统有限公司,未经浙江鸿程计算机系统有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710242819.2/1.html,转载请声明来源钻瓜专利网。
- 上一篇:反馈的响应方法及装置
- 下一篇:一种改进的基于双向传播的评价对象识别方法





