[发明专利]并行执行具有递归子句的查询有效
申请号: | 201680073257.7 | 申请日: | 2016-10-19 |
公开(公告)号: | CN108431805B | 公开(公告)日: | 2021-08-17 |
发明(设计)人: | M·齐亚丁;Y·J·金;朱亚利;A·维特科夫斯基 | 申请(专利权)人: | 甲骨文国际公司 |
主分类号: | G06F16/2455 | 分类号: | G06F16/2455;G06F16/2453 |
代理公司: | 中国贸促会专利商标事务所有限公司 11038 | 代理人: | 周衡威 |
地址: | 美国加*** | 国省代码: | 暂无信息 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 并行 执行 具有 递归 子句 查询 | ||
本文描述了用于使用并行执行数据库操作的多个进程来执行具有递归子句的查询的技术。多个进程中的每个进程生成作为临时表的一部分的段或者被分配作为临时表的一部分的段。对于递归查询的每次迭代,划分工作颗粒并将其分配给多个进程中的每个进程。当每个相应进程为给定迭代产生结果集合的一部分时,该进程将结果集合的所述一部分追加到相应进程所管理的相应段。每个从属进程然后向一个或多个源发布对新生成结果的引用。在下一次迭代期间,任何从属进程可以访问来自先前迭代的任何数据。
技术领域
本发明涉及查询的并行执行,并且更具体地涉及用于并行地使用多个进程来执行具有递归子句的查询的改进的计算机实现的技术。
背景技术
数据库以暴露于外部实体(例如,用户和应用)的逻辑格式将数据存储为行和列。数据库中的数据通过数据库管理系统(DBMS)被访问,该数据库管理系统接受标准语言(诸如SQL)的“数据库查询”。该标准语言提供子句,这些子句允许用户基于可能位于特定数据库对象的具体列中的数据项来访问数据库对象(例如,表或索引)的行。数据库查询可以包括声明不同种类的操作(诸如行的聚合、联接、插入、更新或删除)的许多种类的子句。一种具体类型的子句是递归(recursive)子句。
某种类型的查询是具有递归子句的查询。具有递归子句的查询需要执行多次迭代,并且来自先前迭代的结果被用于执行下一次迭代。通常,进程使用私有缓冲区高速缓存来存储先前迭代的中间结果集,以便为当前迭代执行数据库操作。当需要多个进程并行地执行查询时,私有缓冲区中的中间结果仅对为该缓冲区生成了结果的进程是可用的。因此,进程只能对该进程所缓冲的结果进行工作,而不能对由其它进程产生的结果进行工作。由于这个原因,具有递归子句的查询通常只能由单个进程执行。不幸的是,仅使用单个进程来执行具有递归子句的查询造成了查询执行中的瓶颈。
本节中描述的方法是可以追求的方法,但不一定是以前已设想或追求的方法。因此,除非另有指示,否则不应当假设本节中描述的任何方法仅仅由于它们被包括在本节中而被认为是现有技术。
附图说明
在附图中:
图1A是图示系统体系架构的示例的框图,该系统体系架构被配置为在多个段已被合并到临时表的单个段之前使用盘上游标持续时间临时表(on-disk cursor durationtemporary table)来并行执行具有递归子句的查询;
图1B是图示系统体系架构的示例的框图,该系统体系架构被配置为在多个段已被合并到临时表的单个段之后使用盘上游标持续时间临时表来并行执行具有递归子句的查询;
图2是图示系统体系架构的示例的框图,该系统体系架构被配置为使用存储器中游标持续时间临时表(in-memory cursor durationtemporary table)来并行执行具有递归子句的查询;
图3是图示并行执行具有递归子句的查询的程序流程的流程图。
图4A是通过一个用户与任何其它用户之间的分离程度与其它用户(例如,追随者)相关的用户的亲和度图(affinity graph);
图4B是记录单个消息的接收者将把该消息重新发送到图4A中的亲和度图中的另一个用户的可能性的表;
图4C是可以用于基于图4B中的记录来计算图4A中的亲和度图的传递闭包(transitive closure)的示例查询;
图5A是图示在使用盘上CDTT执行图4C中的示例查询的初始化分支期间图1A中的系统体系架构的系统状态的框图;
图5B是图示在使用盘上CDTT执行图4C中的示例查询的初始化分支之后图1A中的系统体系架构的系统状态的框图;
图5C是图示在使用盘上CDTT执行图4C中的示例查询的递归分支期间图1A中的系统体系架构的系统状态的框图;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于甲骨文国际公司,未经甲骨文国际公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201680073257.7/2.html,转载请声明来源钻瓜专利网。
- 上一篇:将多个容器数据库分组为单个容器数据库集群的能力
- 下一篇:辅助搜索查询