存储过程中多查询乱序执行的系统和方法技术方案

技术编号:14681413 阅读:134 留言:0更新日期:2017-02-22 14:38
在此为数据库处理系统的存储过程中高效的多查询乱序(out of order,OOO)执行提供了实施例。一实施例的方法包括编译包括多个语句的过程。编译时,检测所述语句之间的任何依赖关系并将其在依赖关系表保持。方法还包括执行所述过程。执行时,所述方法包括:当检测到所述语句之间的依赖关系的变化时,在所述依赖关系表中更新所述依赖关系。根据具有更新后的依赖关系的依赖关系表调度所述语句以进行OOO执行。

【技术实现步骤摘要】
【国外来华专利技术】本申请要求于2014年4月29日递交的专利技术名称为“存储过程中多查询乱序执行的系统和方法”的第14/264,851号美国非临时专利申请案的在先申请优先权,其全部内容通过引用结合在本申请中。
本专利技术涉及数据库查询处理,在实施例中,尤其涉及用于存储过程中多查询乱序执行的系统和方法。
技术介绍
在数据库系统中,存储过程由多个结构化查询语言(structuredquerylanguage,SQL)语句(这里也称为查询)组成,用来计算结果。所述过程可以包括顺序执行、分支、循环和对其他存储过程的调用。当写入所述存储过程时,开发者采用顺序执行模型以得到正确的结果。然而,在某些情况下,可能会调度这些语句以使其并行运行,从而实现最佳响应时间。多个商业数据库支持内部并行查询,使一个查询可以分为多个更小的并行部分,以利用更多的资源(例如,处理器核、存储器)。这在某些情况下有助于传统的串行执行方案。然而,多查询乱序(outoforder,OOO)执行能够便于某些场景,其中该过程中,查询或语句是乱序执行的。一种用于调度存储过程中OOO多查询的有效方法例如有利于实现响应时间的提升和/或更好的资源利用。
技术实现思路
根据一实施例,一种由数据库处理系统多查询乱序(outoforder,OOO)执行的方法包括:在编译过程时,检测多个语句即数据库查询语言语句之间的依赖关系;在依赖关系表中保持所述语句的依赖关系。所述方法还包括:在执行所述过程时,检测所述语句之间依赖关系的变化;当检测到所述依赖关系的变化时,在所述依赖关系表中更新所述依赖关系;根据所述依赖关系表对所述语句进行调度以进行OOO执行。根据另一实施例,一种由数据库处理系统执行OOO多查询的方法包括:创建依赖关系分析表。在编译过程时,所述方法包括:检测包括多个语句的查询树中的语句依赖关系;根据所述语句依赖关系在所述表中插入所述语句的依赖关系信息。在执行所述过程时,所述方法包括:对于每个语句,根据所述表中所述语句的所述依赖关系信息确定是否进行第二语句的OOO执行。在执行每个语句时,所述方法包括:在所述表中更新所述语句的依赖关系信息和依赖于所述语句的每个其他语句的依赖关系信息。根据又一实施例,一种支持OOO多查询执行的数据库系统的处理组件包括至少一个处理器和一种用于存储由所述至少一个处理器执行的程序的非瞬时性计算机可读存储介质。所述程序包括指令,用于:在编译过程时,检测多个语句即数据库查询语言语句之间的依赖关系;在依赖关系表中保持所述语句的依赖关系。所述程序还包括指令,用于:在执行时,当检测到所述语句之间的依赖关系的变化时,在所述依赖关系表中更新依赖关系。所述程序还包括指令,用于:根据所述依赖关系表对所述语句进行调度以进行OOO执行。根据又一实施例,一种计算机可读介质,用于存储指令的计算机程序,其中,当处理系统执行所述指令时,所述指令使所述系统执行一种方法。所述方法包括:在编译过程时,检测多个语句即数据库查询语言语句之间的依赖关系;在依赖关系表中保持所述语句的依赖关系。所述方法还包括:在执行所述过程时,检测所述语句之间依赖关系的变化;当检测到所述依赖关系的变化时,在所述依赖关系表中更新所述依赖关系;根据所述依赖关系表对所述语句进行调度以进行OOO执行。根据又一实施例,一种数据库处理系统的处理组件包括:用于编译过程时,检测多个语句即数据库查询语言语句之间的依赖关系的构件;用于在依赖关系表中保持所述语句的依赖关系的构件;用于在执行所述过程时,检测所述语句之间依赖关系的变化的构件;用于当检测到所述依赖关系的变化时,在所述依赖关系表中更新所述依赖关系的构件;用于根据所述依赖关系表对所述语句进行调度以进行OOO执行的构件。根据又一实施例,所述处理组件可包括其他一个或多个构件(或模块)来分别执行方法实施例中提供的一个或多个步骤。根据又一实施例,一种数据库处理系统包括:处理系统,用于:创建依赖关系分析表;在编译过程时,检测包括多个语句的查询树中的语句依赖关系;根据所述语句依赖关系在所述表中插入所述语句的依赖关系信息;在执行所述过程时,对于每个语句,根据所述表中所述语句的所述依赖关系信息确定是否进行第二语句的OOO执行;在执行每个语句时,在所述表中更新所述语句的依赖关系信息和依赖于所述语句的每个其他语句的依赖关系信息。根据又一实施例,所述处理系统可包括其他一个或多个构件(或模块)来分别执行方法实施例中提供的一个或多个步骤。上文宽泛地概括了本专利技术实施例的特征,以便可以更好地理解以下本专利技术详细描述。下文将对本专利技术实施例的其他的特征和优势进行说明,这也构成了本专利技术权利要求的主题。本领域的技术人员应当理解,所公开的概念和特定实施例易被用作修改或设计其他实现与本专利技术相同的目的的结构或过程的基础。本领域的技术人员还应当意识到,这种等同构造不脱离所附权利要求书所阐述的本专利技术的精神和范围。附图说明为了更完整地理解本专利技术及其优点,现在参考下文结合附图进行的描述,其中:图1示出了用于存储过程的查询树的示例。图2示出了一实施例的用于存储过程中多查询乱序调度的方法。图3是一种能够用于执行不同实施例的处理系统图。除非另有指示,否则不同图中的对应标号和符号通常指代对应部分。绘制各图是为了清楚地说明实施例的相关方面,因此未必是按比例绘制的。具体实施方式下文将详细论述当前优选实施例的制作和使用。然而,应了解,本专利技术提供可在各种具体上下文中体现的许多适用的专利技术性概念。所论述的具体实施例仅仅说明用以实施和使用本专利技术的具体方式,而不限制本专利技术的范围。一些场景中要求或受益于多查询乱序(outoforder,OOO)执行。例如,由于数据倾斜,内部并行查询的中间资源利用率可能会有偏差,造成资源闲置或资源在执行时的某些时间段内可用。在顺序模型中,下一语句必须等待上一语句完成。然而,使用OOO执行允许下一语句使用可用的资源,而不用等待。在中央处理器(centralprocessingunit,CPU)内集成有多个核的场景中,通过一定程度的并行,可不包括所有处理核,中等大小的查询可实现更高的CPU效率。这样,剩下一些可用核。通过OOO执行,所述可用核可用于执行除了当前查询外的其他语句,进而提升整体效率。在另一场景中,资源管理器监控系统,并可以根据当前资源利用率延迟查询。然而,若允许所述管理器获知当前存储过程中的下一语句,所述监控器可调度一些语句,进而全面利用资源。所述调度可进一步允许共享所述资源,如缓冲池。这里的实施例提供了存储过程中的高效OOO多查询执行。所述实施例包括一种系统框架和方法,用于调度OOO多查询,实现用于执行存储过程(storedprocedure,SP)语句的更快的响应时间。这里所使用的可互换的术语“查询”和“语句”是指所述SP中的单个指令。在编译SP时,解析并分析每个语句中的读入集(readset,RS)对象和写入集(writeset,WS)对象以用于依赖关系。分析的结果在系统表中保持。若数据定义语言(datadefinitionlanguage,DDL)改变了数据库依赖关系,可重新编译SP。当(在所述编译步骤后)运行或执行所述SP时,如果需要的话,可找回并进而修改RS/WS对象依赖关系。任何没有依赖关系的语句可经本文档来自技高网...
存储过程中多查询乱序执行的系统和方法

【技术保护点】
一种由数据库处理系统进行多查询的乱序(out of order,OOO)执行的方法,其特征在于,所述方法包括:在编译过程时,检测多个语句即数据库查询语言语句之间的依赖关系;在依赖关系表中保持所述语句的依赖关系;在执行所述过程时,检测所述语句之间依赖关系的变化;当检测到所述依赖关系的变化时,在所述依赖关系表中更新所述依赖关系;根据所述依赖关系表对所述语句进行调度以进行OOO执行。

【技术特征摘要】
【国外来华专利技术】2014.04.29 US 14/264,8511.一种由数据库处理系统进行多查询的乱序(outoforder,OOO)执行的方法,其特征在于,所述方法包括:在编译过程时,检测多个语句即数据库查询语言语句之间的依赖关系;在依赖关系表中保持所述语句的依赖关系;在执行所述过程时,检测所述语句之间依赖关系的变化;当检测到所述依赖关系的变化时,在所述依赖关系表中更新所述依赖关系;根据所述依赖关系表对所述语句进行调度以进行OOO执行。2.根据权利要求1所述的方法,其特征在于,所述根据所述依赖关系表对所述语句进行调度以进行OOO执行包括:在无需等待第一语句执行完成时调度第二语句以进行执行其中,按照所述依赖关系表,在所述过程中,所述第二语句跟随所述第一语句之后,并且独立于所述第一语句。3.根据权利要求2所述的方法,其特征在于,所述调度第二语句以进行执行还包括:比较在所述第一语句执行完成前执行所述第二语句的成本;当根据所述成本确定OOO执行所述第二语句有益时,在所述第一语句执行完成前执行所述第二语句。4.根据权利要求1至3中任意一项所述的方法,其特征在于,检测所述语句之间的所述依赖关系包括:在编译所述过程时,确定执行所述语句中每个语句的成本;当确定语句的成本超过预定义的阈值时,对所述语句进行依赖关系分析。5.根据权利要求4所述的方法,其特征在于,所述对所述语句进行依赖关系分析包括:将所述语句的每个读入对象加入读入集;将所述语句的每个写入对象加入写入集;将所述语句的所述读入集和所述写入集插入所述依赖关系表中的相应条目中。6.根据权利要求1至3中的任意一项所述的方法,其特征在于,检测所述语句之间的所述依赖关系包括:检测执行第一语句是否会影响在所述过程中跟随所述第一语句之后的所述第二语句的执行。7.根据权利要求1至6中任意一项所述的方法,其特征在于,所述语句包括由一个查询分成的多个查询片段。8.根据权利要求7所述的方法,其特征在于,还包括:在编译时,当检测到实用命令时,插入界限来标记查询树的相应片段。9.根据权利要求8所述的方法,其特征在于,对于每个语句,在执行所述过程时,根据所述表中所述语句的依赖关系信息确定所述第二语句的OOO执行,而不越过所述界限对语句进行调度执行。10.根据权利要求1至9中的任意一项所述的方法,其特征在于,检测所述语句之间的所述依赖关系包括:在所述语句中识别每个读入对象、写入对象、对象粒度、根据所述语句的执行结果的隐式数据库依赖关系以及查询粒度。11.一种支持多查询乱序(outoforder,OOO)执行的数据库系统的处理组件,其特征在于,所述处理组件包括:至少一个处理器;非瞬时性计算机可读存储介质,用于存储由所述至少一个处理器执行的程序,其中,所述程序包括指令,用于:在编译过程时,检测多个语句即数据库查询语言语句之间的依赖关系;在依赖关系表中保持所述语句的依赖关系;在执行所述过程时,检测所述语句之间依赖关系的变化;当检测到所述依赖关系的变化时,在所述依赖关系表中更新所述依赖关系;根据所述依赖关系表对所述语句进行调度以进行OOO执行。12.根据权利要求11所述的处理组件,其特征在于,用于根据所述依赖关系表对所述语句进行调度以进行OOO执行的指令包括:用于在无需等待第一语句执行完成时调度第二语句以进行执行的指令。13.根据权利要求12所述的处理组件,其特征在于,在所述过程中所述第二语句跟随所述第一语句之后,并且独立于所述第一语句。14.根据权利要求11至13中任意一项所述的处理组件,其...

【专利技术属性】
技术研发人员:周庆庆
申请(专利权)人:华为技术有限公司
类型:发明
国别省市:广东;44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1