[发明专利]并行执行具有递归子句的查询有效
申请号: | 201680073257.7 | 申请日: | 2016-10-19 |
公开(公告)号: | CN108431805B | 公开(公告)日: | 2021-08-17 |
发明(设计)人: | M·齐亚丁;Y·J·金;朱亚利;A·维特科夫斯基 | 申请(专利权)人: | 甲骨文国际公司 |
主分类号: | G06F16/2455 | 分类号: | G06F16/2455;G06F16/2453 |
代理公司: | 中国贸促会专利商标事务所有限公司 11038 | 代理人: | 周衡威 |
地址: | 美国加*** | 国省代码: | 暂无信息 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 并行 执行 具有 递归 子句 查询 | ||
1.一种计算机实现的方法,包括:
接收执行具有递归子句的查询的请求;
生成用于第一结果集合的临时表,其中所述临时表包括多个段,每个段与并行地执行数据库操作的多个进程中的相应进程相关联;
由所述多个进程并行地执行所述递归子句的第一迭代,以生成所述第一结果集合;
指示第一结果集合与所述递归子句的所述第一迭代相关联;
将第一结果集合存储在所述临时表中,其中所述多个进程中的每个进程将由相应进程生成的结果存储在与该相应进程相关联的段中;
对于一个或多个附加迭代,所述多个进程中的每个相应进程:
基于将来自先前迭代的结果集合与所述先前迭代相关联的指示,从与该相应进程相关联的段中检索来自所述先前迭代的结果集合;
指示相应的附加结果集合与相应的附加迭代相关联;以及
将所述相应的附加结果集合追加到与产生了所述相应的附加结果集合的所述相应进程相关联的相应段。
2.如权利要求1所述的计算机实现的方法,其中所述多个进程正在多个数据库服务器上执行;所述方法还包括:
对于所述多个段中的与所述多个进程中的相应进程相关联的每个相应段,
在执行该相应进程的数据库服务器的易失性存储器中存储与该相应进程相关联的相应段的至少一部分;
在所述数据库服务器的易失性存储器中存储到所述相应段的一个或多个映射。
3.如权利要求1所述的计算机实现的方法,其中所述多个进程正在可操作地耦接到共享存储装置的多个数据库服务器上执行;所述方法还包括:
对于所述多个段中的与所述多个进程中的相应进程相关联的每个相应段,
在所述共享存储装置中存储与该相应进程相关联的相应段;
在执行该相应进程的数据库服务器的易失性存储器中存储到该相应段的一个或多个映射;以及
将所述多个段的映射合并到与所述临时表相关联的单个特定段中。
4.如权利要求1所述的计算机实现的方法,还包括在所述多个进程上针对基于所述查询的所述递归子句生成的整个临时表并行地执行最后一组一个或多个数据库操作。
5.如权利要求1所述的计算机实现的方法,其中所述多个进程中的每个进程被锁定而不执行用于其它查询的其它数据库操作,直到完成所述查询的至少所述递归子句的执行。
6.如权利要求1所述的计算机实现的方法,其中所述临时表在内部被定义并且与游标相关联;所述方法还包括:
当所述游标老化移出时删除所述临时表。
7.如权利要求1所述的计算机实现的方法,还包括:
在每次迭代之后检查所述递归子句的结束条件;以及
当且仅当没有找到结束条件时,
为下一次迭代创建工作颗粒;以及
将所述工作颗粒分发给所述多个进程以并行执行。
8.如权利要求1所述的计算机实现的方法,其中基于将来自先前迭代的结果集合与所述先前迭代相关联的指示从所述临时表中检索来自所述先前迭代的结果集合是通过以下执行的:
所述多个进程中的每个相应进程:
生成一个或多个工作颗粒以针对所述临时表的一部分执行扫描;
执行由所述一个或多个工作颗粒定义的针对所述临时表的所述一部分的所述扫描;以及
基于所述扫描,向所述多个进程分发来自所述先前迭代的所述结果集合。
9.一个或多个携带指令的计算机可读介质,所述指令当由一个或多个处理器执行时使得执行如权利要求1-8中任一项所述的方法。
10.一种包括一个或多个计算设备的系统,所述系统被配置为使得执行如权利要求1-8中任一项所述的方法。
11.一种包括用于执行如权利要求1-8中任一项所述的方法的部件的装置。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于甲骨文国际公司,未经甲骨文国际公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201680073257.7/1.html,转载请声明来源钻瓜专利网。
- 上一篇:将多个容器数据库分组为单个容器数据库集群的能力
- 下一篇:辅助搜索查询