CN106462584A - 存储过程中多查询乱序执行的系统和方法 - Google Patents
存储过程中多查询乱序执行的系统和方法 Download PDFInfo
- Publication number
- CN106462584A CN106462584A CN201580013930.3A CN201580013930A CN106462584A CN 106462584 A CN106462584 A CN 106462584A CN 201580013930 A CN201580013930 A CN 201580013930A CN 106462584 A CN106462584 A CN 106462584A
- Authority
- CN
- China
- Prior art keywords
- sentence
- dependence
- execution
- executing
- ooo
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
- G06F16/24534—Query rewriting; Transformation
- G06F16/24542—Plan optimisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2282—Tablespace storage structures; Management thereof
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Operations Research (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Stored Programmes (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
在此为数据库处理系统的存储过程中高效的多查询乱序(out of order,OOO)执行提供了实施例。一实施例的方法包括编译包括多个语句的过程。编译时,检测所述语句之间的任何依赖关系并将其在依赖关系表保持。方法还包括执行所述过程。执行时,所述方法包括:当检测到所述语句之间的依赖关系的变化时,在所述依赖关系表中更新所述依赖关系。根据具有更新后的依赖关系的依赖关系表调度所述语句以进行OOO执行。
Description
本申请要求于2014年4月29日递交的发明名称为“存储过程中多查询乱序执行的系统和方法”的第14/264,851号美国非临时专利申请案的在先申请优先权,其全部内容通过引用结合在本申请中。
技术领域
本发明涉及数据库查询处理,在实施例中,尤其涉及用于存储过程中多查询乱序执行的系统和方法。
背景技术
在数据库系统中,存储过程由多个结构化查询语言(structured querylanguage,SQL)语句(这里也称为查询)组成,用来计算结果。所述过程可以包括顺序执行、分支、循环和对其他存储过程的调用。当写入所述存储过程时,开发者采用顺序执行模型以得到正确的结果。然而,在某些情况下,可能会调度这些语句以使其并行运行,从而实现最佳响应时间。多个商业数据库支持内部并行查询,使一个查询可以分为多个更小的并行部分,以利用更多的资源(例如,处理器核、存储器)。这在某些情况下有助于传统的串行执行方案。然而,多查询乱序(out of order,OOO)执行能够便于某些场景,其中该过程中,查询或语句是乱序执行的。一种用于调度存储过程中OOO多查询的有效方法例如有利于实现响应时间的提升和/或更好的资源利用。
发明内容
根据一实施例,一种由数据库处理系统多查询乱序(out of order,OOO)执行的方法包括:在编译过程时,检测多个语句即数据库查询语言语句之间的依赖关系;在依赖关系表中保持所述语句的依赖关系。所述方法还包括:在执行所述过程时,检测所述语句之间依赖关系的变化;当检测到所述依赖关系的变化时,在所述依赖关系表中更新所述依赖关系;根据所述依赖关系表对所述语句进行调度以进行OOO执行。
根据另一实施例,一种由数据库处理系统执行OOO多查询的方法包括:创建依赖关系分析表。在编译过程时,所述方法包括:检测包括多个语句的查询树中的语句依赖关系;根据所述语句依赖关系在所述表中插入所述语句的依赖关系信息。在执行所述过程时,所述方法包括:对于每个语句,根据所述表中所述语句的所述依赖关系信息确定是否进行第二语句的OOO执行。在执行每个语句时,所述方法包括:在所述表中更新所述语句的依赖关系信息和依赖于所述语句的每个其他语句的依赖关系信息。
根据又一实施例,一种支持OOO多查询执行的数据库系统的处理组件包括至少一个处理器和一种用于存储由所述至少一个处理器执行的程序的非瞬时性计算机可读存储介质。所述程序包括指令,用于:在编译过程时,检测多个语句即数据库查询语言语句之间的依赖关系;在依赖关系表中保持所述语句的依赖关系。所述程序还包括指令,用于:在执行时,当检测到所述语句之间的依赖关系的变化时,在所述依赖关系表中更新依赖关系。所述程序还包括指令,用于:根据所述依赖关系表对所述语句进行调度以进行OOO执行。
根据又一实施例,一种计算机可读介质,用于存储指令的计算机程序,其中,当处理系统执行所述指令时,所述指令使所述系统执行一种方法。所述方法包括:在编译过程时,检测多个语句即数据库查询语言语句之间的依赖关系;在依赖关系表中保持所述语句的依赖关系。所述方法还包括:在执行所述过程时,检测所述语句之间依赖关系的变化;当检测到所述依赖关系的变化时,在所述依赖关系表中更新所述依赖关系;根据所述依赖关系表对所述语句进行调度以进行OOO执行。
根据又一实施例,一种数据库处理系统的处理组件包括:
用于编译过程时,检测多个语句即数据库查询语言语句之间的依赖关系的构件;
用于在依赖关系表中保持所述语句的依赖关系的构件;
用于在执行所述过程时,检测所述语句之间依赖关系的变化的构件;
用于当检测到所述依赖关系的变化时,在所述依赖关系表中更新所述依赖关系的构件;
用于根据所述依赖关系表对所述语句进行调度以进行OOO执行的构件。
根据又一实施例,所述处理组件可包括其他一个或多个构件(或模块)来分别执行方法实施例中提供的一个或多个步骤。
根据又一实施例,一种数据库处理系统包括:处理系统,用于:
创建依赖关系分析表;
在编译过程时,检测包括多个语句的查询树中的语句依赖关系;
根据所述语句依赖关系在所述表中插入所述语句的依赖关系信息;
在执行所述过程时,对于每个语句,根据所述表中所述语句的所述依赖关系信息确定是否进行第二语句的OOO执行;
在执行每个语句时,在所述表中更新所述语句的依赖关系信息和依赖于所述语句的每个其他语句的依赖关系信息。
根据又一实施例,所述处理系统可包括其他一个或多个构件(或模块)来分别执行方法实施例中提供的一个或多个步骤。
上文宽泛地概括了本发明实施例的特征,以便可以更好地理解以下本发明详细描述。下文将对本发明实施例的其他的特征和优势进行说明,这也构成了本发明权利要求的主题。本领域的技术人员应当理解,所公开的概念和特定实施例易被用作修改或设计其他实现与本发明相同的目的的结构或过程的基础。本领域的技术人员还应当意识到,这种等同构造不脱离所附权利要求书所阐述的本发明的精神和范围。
附图说明
为了更完整地理解本发明及其优点,现在参考下文结合附图进行的描述,其中:
图1示出了用于存储过程的查询树的示例。
图2示出了一实施例的用于存储过程中多查询乱序调度的方法。
图3是一种能够用于执行不同实施例的处理系统图。
除非另有指示,否则不同图中的对应标号和符号通常指代对应部分。绘制各图是为了清楚地说明实施例的相关方面,因此未必是按比例绘制的。
具体实施方式
下文将详细论述当前优选实施例的制作和使用。然而,应了解,本发明提供可在各种具体上下文中体现的许多适用的发明性概念。所论述的具体实施例仅仅说明用以实施和使用本发明的具体方式,而不限制本发明的范围。
一些场景中要求或受益于多查询乱序(out of order,OOO)执行。例如,由于数据倾斜,内部并行查询的中间资源利用率可能会有偏差,造成资源闲置或资源在执行时的某些时间段内可用。在顺序模型中,下一语句必须等待上一语句完成。然而,使用OOO执行允许下一语句使用可用的资源,而不用等待。在中央处理器(central processing unit,CPU)内集成有多个核的场景中,通过一定程度的并行,可不包括所有处理核,中等大小的查询可实现更高的CPU效率。这样,剩下一些可用核。通过OOO执行,所述可用核可用于执行除了当前查询外的其他语句,进而提升整体效率。在另一场景中,资源管理器监控系统,并可以根据当前资源利用率延迟查询。然而,若允许所述管理器获知当前存储过程中的下一语句,所述监控器可调度一些语句,进而全面利用资源。所述调度可进一步允许共享所述资源,如缓冲池。
这里的实施例提供了存储过程中的高效OOO多查询执行。所述实施例包括一种系统框架和方法,用于调度OOO多查询,实现用于执行存储过程(stored procedure,SP)语句的更快的响应时间。这里所使用的可互换的术语“查询”和“语句”是指所述SP中的单个指令。在编译SP时,解析并分析每个语句中的读入集(read set,RS)对象和写入集(writeset,WS)对象以用于依赖关系。分析的结果在系统表中保持。若数据定义语言(datadefinition language,DDL)改变了数据库依赖关系,可重新编译SP。当(在所述编译步骤后)运行或执行所述SP时,如果需要的话,可找回并进而修改RS/WS对象依赖关系。任何没有依赖关系的语句可经调度以任何顺序运行,例如,若执行语句的成本估计表明OOO运行是有益的。
数据库系统配备有多个组件,使能调度存储过程中的OOO多查询。所述组件包括一个编译器,能编译SP并识别存储过程中的RS和WS对象。所述系统配备有一个用于追踪数据库对象的依赖关系的系统表和一个能调度OOO查询的查询调度器。所述系统编译器用于解析SP并识别RS/WS对象,使能进行依赖关系分析。在编译步骤中,如下所述,用于追踪数据库对象依赖关系的所述系统表用来识别RS/WS中参考的对象。随后,在运行时间或执行中,查询调度器进行另一轮的运行时间依赖关系检查,并相应地调度OOO查询(资源利用率)。
为了分析数据依赖关系,分析存储过程的语句(或查询)中的多个特征,其中包括RS/WS对象、数据库对象粒度、隐式数据库依赖关系和查询粒度。RS对象被识别为查询需要读入的任何对象。WS对象被标识为查询将要更新的任何对象。有两类RS/WS对象:程序对象和数据库对象。典型地,程序对象可被程序语言识别并处理。数据库对象可能更复杂,若按字面检查(仅根据语法)数据库对象,可造成错误的依赖关系结果。
例如,表1示出了S1和S2这两个语句以及相应的RS和WS。根据字面(语法)解读,T1和V1是不同的对象,因此S1和S2可能互相独立且可如述调度。然而,若V1实际上是T1的物化视图,那么S2依赖于S1。为了重新编译SP,在系统中保持系统表来追踪对象的依赖关系。可基于系统表信息来确定S1和S2的RS/WS对象的实际依赖关系。
表1:语句以及相应的RS/WS的示例
图1示出了用于存储过程的查询树100的示例。查询树100包括多个SQL语句(或查询),其中包括:
UPDATE T3…WHERE c=(SELECT COUNT(*)FROM V1 JOIN T1 ON…)。
上述中,视图V1分解为对象T1和T2。WS={T3},RS={T1,T2}。为识别WS,将UPDATE目标加入WS。
不像其他数据,数据库对象可以具有粒度。例如,表2示出了S1和S2这两个语句以及对象粒度。尽管S1和S2在表1中有依赖关系,但是这两个语句实际涉及不同的范围。因此,S1和S2可单独调度。因为SP可将获取参数作为用户输入,所以运行时间的检查用于核实不出现在编译时而是在运行时间内出现的依赖关系。
表2:语句以及对象粒度的示例
语句 | 读入集 | 写入集 |
S1 | @i,V1(c>1) | V1 |
S2 | @j | T1(c<1) |
在隐式数据库依赖关系的示例中,考虑了下列语句:
S1:UPDATE tbl SET i=1WHERE i=2;
S2:GET DIAGNOSTICS var=ROW_COUNT。
上述中,根据字面(语法)分析,这两个语句之间没有依赖关系。然而,根据执行S1的结果,语句S2受到了影响。因此,S2实际上依赖于S1。也有命令能改变随机种子、改变语言地区行为或改变造成后面语句中行为变化的其他命令。这种命令,例如,UTILITY命令,可作为界限,查询不能(在完成所述命令前)越过所述命令调度。
考虑到查询执行支持内部并行查询,根据查询粒度,实际上一个查询可由几个小查询组成。因此,如上所述,所述查询的每个并行片段都可作为一个完整的查询,并相应地分析依赖关系。例如,表3示出了S1和S2这两个语句以及查询粒度。
表3:语句以及查询粒度的示例
语句 | 读入集 | 写入集 |
S1 | @i,T1 | T1 |
S2 | @j | T1,T2 |
表3中,S2依赖于S1的T1。因为S2是T1和T2之间的结合命令,查询优化器能使S2按如下并行:
--HashJoin---repartition–T1
|-----repartition–T2(build side)
如表4所示,所述并行可改变依赖关系。
表4:表3中S2并行后的语句
上述中,S2_2得以在S1前面自由运行,但是一直到S1完成前S2_3都被阻止运行。这并不会使能够进行内部并行查询的查询优化器变得更复杂。
识别依赖关系的算法包括两部分:编译时间部分和运行时间部分。所述运行时间部分用于验证参数和确定任何编译时间操作中不确定的依赖关系。下列是对数据依赖关系分析的算法的示例:
DataDependencyAnalysis(SP@sp)
/*创建依赖关系表*/
For each statement,parse tree@s in@sp analysis dependency:
Create an entry(statement,RS{},WS{},DependOn{})in dependency table
If@s is a UTILITY command
Insert a barrier protecting current segment
Else
/*注意:叶子节点已将视图重新写入基数关系*/
Insert leaf nodes,arguments to RS{}and destination node(includingtriggers)to WS{}
/*分析从未越过界限的依赖关系*/
For each barrier protected segments
For each pair(i,j),i<j,within this segment
Add i to j’s DependOn{}if(WS(j)∩RS(i))∪(WS(i)∩RS(j))∪(WS(i)∩WS(j))!=
/*保持结果*/
Mark the ones with arguments DependOn{}=uncertain for runtimeanalysis
Persist the results together with@sp in a system table
因为依赖关系分析是基于数据库对象的,若编译时间内任何对象发生了变化,就要重新编译查询或语句并重新计算依赖关系。如上所述,若数据库对象的数据发生变化,可能需要也可能不需要编译,取决于依赖关系的粒度。
当S1和S2之间没有数据依赖关系时,可选择利用OOO运行语句,可取决于资源调节器(或调度器)。这种情况下,不需要额外逻辑,所述资源调节器可简单地将S1和S2视作新到的查询。然后,可将解决分支依赖关系延迟至查询运行时间。
下列查询是处理查询分支的示例:
@i=SELECT COUNT(*)FROM T WHERE i>9;--S1
IF(@i>1000)
@j=SELECT…;--S2
ELSE
@k=SELECT…;--S3
对于上述的查询分支,查询优化器设置概率@p为@i>1000。执行时,查询控制器可监控S1的执行,相应地调节@p,来决定是否调用S2或S3。实现回环也可视为分支的一种特殊情况。
图2示出了一实施例的,例如,数据库处理系统调度存储过程中OOO多查询的方法200。步骤210:创建或保持依赖关系分析表。所述表包括下列元素的列:语句标识符、语句的RS、语句的WS和语句的依赖关系。步骤220:在编译SP中的每个语句时,所述方法开始解析查询树来分析依赖关系,并相应地更新依赖关系表。该步骤可包括:确定执行每个语句的成本,若所述成本超过预定义的阈值(例如,执行时间、内存使用率),则对所述语句进行依赖关系分析。否则,可跳过对所述语句的依赖关系分析。步骤230:解析时,对于每个检测到的UTILITY命令(例如,预定义的UTILITY命令),在语句中插入界限,来保护语句的当前解析片段。步骤240:解析时,将所述树中每个叶子节点的参数插入到解析的语句的表条目中的RS列。步骤250:将目的节点(包括触发器)插入到条目的WS。步骤260:对于每个界限,分析语句之间的依赖关系(如上述实施例所述),对所述表中每个语句的依赖关系信息进行更新以指示依赖关系。在编译阶段初步考虑依赖关系,例如,在运行时间阶段会改变的对象。步骤270:在运行时间或执行阶段,对于每个当前执行的语句,通过检验所述表中的依赖关系信息以及编译时插入的界限,资源调度器考虑其他语句的OOO执行。所述步骤可包括:比较在过程顺序中上一语句执行完成前执行语句的成本(例如,时延、内存使用)。当根据所述成本确定OOO执行第二语句有益(例如,节省执行时间)时,在上一语句执行完成前执行所述第二语句。步骤280:在执行每个语句时,若需要的话,系统根据执行结果更新语句的依赖关系信息以及所述语句所依赖的语句的依赖关系信息。
图3是处理系统300的方框图,该处理系统可以用来实现本文公开的实施例和方法。例如,处理系统300可为数据库处理系统或所述系统的一部分,例如,服务器。特定装置可利用所有所示的组件或所述组件的仅一子集,且装置之间的集成程度可能不同。此外,设备可以包括部件的多个实例,例如多个处理单元、处理器、存储器、发射器、接收器等。处理系统300可以包括配备一个或多个输入/输出设备,例如扬声器、麦克风、鼠标、触摸屏、按键、键盘、打印机、显示器等的处理单元301。处理单元301可以包括中央处理器(CPU)310、存储器320、大容量存储器设备330、视频适配器340以及连接至总线的I/O接口390。
总线可以是任意类型的若干总线架构中的一个或多个,包括存储总线或存储控制器、外设总线、视频总线等等。所述CPU310可包括任何类型的电子数据处理器。存储器320可包括任意类型的系统存储器,例如静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、同步DRAM(SDRAM)、只读存储器(ROM)或其组合等等。在实施例中,存储器320可包括在开机时使用的ROM以及在执行程序时使用的存储程序和数据的DRAM。
大容量存储器设备330可包括任意类型的存储设备,其用于存储数据、程序和其它信息,并使这些数据、程序和其它信息通过总线访问。大容量存储器设备330可包括如下项中的一种或多种:固态磁盘、硬盘驱动器、磁盘驱动器、光盘驱动器等等。
视频适配器340和I/O接口390提供接口以将外部输入和输出设备耦合到处理单元301。如图所示,输入和输出设备的示例包括耦合到视频适配器340的显示器360和耦合到I/O接口390的鼠标/键盘/打印机组合370。其它设备可以耦合到处理器单元301,并且可以使用额外或更少的接口卡。例如,可使用如通用串行总线(USB)(未示出)等串行接口将接口提供给打印机。
处理单元301还包括一个或多个网络接口350,网络接口350可包括以太网电缆等有线链路,和/或到接入节点或者一个或多个网络380的无线链路。网络接口350允许处理单元301通过网络380与远程单元通信。例如,网络接口350可以通过一个或多个发射器/发射天线以及一个或多个接收器/接收天线提供无线通信。在一个实施例中,处理单元301耦合到局域网或广域网上以用于数据处理以及与远程装置通信,所述远程装置例如其它处理单元、因特网、远程存储设施或其类似者。
虽然本发明中已提供若干实施例,但应理解,在不脱离本发明的精神或范围的情况下,本发明所公开的系统和方法可以以许多其他特定形式来体现。本发明的实例应被视为说明性而非限制性的,且本发明并不限于本文本所给出的细节。例如,各种元件或部件可以在另一系统中组合或合并,或者某些特征可以省略或不实施。
此外,在不脱离本发明的范围的情况下,各种实施例中描述和说明为离散或单独的技术、系统、子系统和方法可以与其它系统、模块、技术或方法进行组合或合并。展示或论述为彼此耦合或直接耦合或通信的其它项也可以采用电方式、机械方式或其它方式通过某一接口、设备或中间部件间接地耦合或通信。其他变化、替代和改变的示例可以由本领域的技术人员在不脱离本文精神和所公开的范围的情况下确定。
Claims (26)
1.一种由数据库处理系统进行多查询的乱序(out of order,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.一种支持多查询乱序(out of order,OOO)执行的数据库系统的处理组件,其特征在于,所述处理组件包括:
至少一个处理器;
非瞬时性计算机可读存储介质,用于存储由所述至少一个处理器执行的程序,其中,所述程序包括指令,用于:
在编译过程时,检测多个语句即数据库查询语言语句之间的依赖关系;
在依赖关系表中保持所述语句的依赖关系;
在执行所述过程时,检测所述语句之间依赖关系的变化;
当检测到所述依赖关系的变化时,在所述依赖关系表中更新所述依赖关系;
根据所述依赖关系表对所述语句进行调度以进行OOO执行。
12.根据权利要求11所述的处理组件,其特征在于,用于根据所述依赖关系表对所述语句进行调度以进行OOO执行的指令包括:用于在无需等待第一语句执行完成时调度第二语句以进行执行的指令。
13.根据权利要求12所述的处理组件,其特征在于,在所述过程中所述第二语句跟随所述第一语句之后,并且独立于所述第一语句。
14.根据权利要求11至13中任意一项所述的处理组件,其特征在于,检测所述语句之间的所述依赖关系的所述指令包括:用于执行以下操作的指令:
在编译所述过程时,确定执行所述语句中每个语句的成本;
当确定语句的成本超过预定义的阈值时,对所述语句进行依赖关系分析。
15.根据权利要求14所述的处理组件,其特征在于,对所述语句进行依赖关系分析的所述指令包括:用于执行以下操作的指令:
将所述语句的每个读入对象加入读入集;
将所述语句的每个写入对象加入写入集;
将所述语句的所述读入集和所述写入集插入所述依赖关系表中的相应条目中。
16.一种计算机可读介质,用于存储指令的计算机程序,其中,当处理系统执行所述指令时,所述指令使所述系统执行权利要求1至10中任意一项所述的方法。
17.一种数据库处理系统的处理组件,其特征在于,包括:
用于在编译过程时,检测多个语句即数据库查询语言语句之间的依赖关系的构件;
用于在依赖关系表中保持所述语句的依赖关系的构件;
用于在执行所述过程时,检测所述语句之间依赖关系的变化的构件;
用于当检测到所述依赖关系的变化时,在所述依赖关系表中更新所述依赖关系的构件;
用于根据所述依赖关系表对所述语句进行调度以进行OOO执行的构件。
18.一种由数据库处理系统多查询乱序(out of order,OOO)执行的方法,其特征在于,所述方法包括:
创建依赖关系分析表;
在编译过程时,检测包括多个语句的查询树中的语句依赖关系;
根据所述语句依赖关系在所述表中插入所述语句的依赖关系信息;
在执行所述过程时,对于每个语句,根据所述表中所述语句的所述依赖关系信息确定是否进行第二语句的OOO执行;
在执行每个语句时,在所述表中更新所述语句的依赖关系信息和依赖于所述语句的每个其他语句的依赖关系信息。
19.根据权利要求18所述的方法,其特征在于,所述对于每个语句,确定是否进行第二语句的OOO执行包括:当在所述表中检测出所述第二语句不依赖于所述语句时,调度所述第二语句以进行执行,而不用等待所述语句执行完成。
20.根据权利要求19所述的方法,其特征在于,所述第二语句在所述查询树中跟随所述语句之后。
21.根据权利要求18所述的方法,其特征在于,所述表包括:每个语句的条目,其中所述条目包括标识符、读入集和写入集,其中,根据所述读入集和所述写入集检测所述语句依赖关系,从而确定所述语句相对于另一语句的依赖关系信息。
22.根据权利要求21所述的方法,其特征在于,还包括:
将所述查询树的每个叶子节点语句的参数插入到与所述表中的叶子节点语句对应的条目的读入集中;
将所述叶子节点的每个目的节点,包括每个触发器,插入到所述条目中的写入集中。
23.根据权利要求18所述的方法,其特征在于,还包括:在编译时,当检测到实用命令时,插入界限来标记所述查询树的相应片段。
24.根据权利要求23所述的方法,其特征在于,在执行所述过程时,对于每个语句,根据所述表中所述语句的所述依赖关系信息确定所述第二语句的OOO执行,而不越过所述界限对语句进行调度执行。
25.一种计算机可读介质,用于存储指令的计算机程序,其中,当处理系统执行所述指令时,所述指令使所述系统执行权利要求17至24中任意一项所述的方法。
26.一种数据库处理系统,其特征在于,包括:处理系统,用于:
创建依赖关系分析表;
在编译过程时,检测包括多个语句的查询树中的语句依赖关系;
根据所述语句依赖关系在所述表中插入所述语句的依赖关系信息;
在执行所述过程时,对于每个语句,根据所述表中所述语句的所述依赖关系信息确定是否进行第二语句的OOO执行;
在执行每个语句时,在所述表中更新所述语句的依赖关系信息和依赖于所述语句的每个其他语句的依赖关系信息。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/264,851 | 2014-04-29 | ||
US14/264,851 US9552390B2 (en) | 2014-04-29 | 2014-04-29 | System and method for out of order multiple query execution within stored procedure |
PCT/CN2015/077717 WO2015165385A1 (en) | 2014-04-29 | 2015-04-28 | System and Method for Out of Order Multiple Query Execution within Stored Procedure |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106462584A true CN106462584A (zh) | 2017-02-22 |
CN106462584B CN106462584B (zh) | 2019-11-29 |
Family
ID=54334984
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201580013930.3A Active CN106462584B (zh) | 2014-04-29 | 2015-04-28 | 存储过程中多查询乱序执行的系统和方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US9552390B2 (zh) |
EP (1) | EP3114590B1 (zh) |
CN (1) | CN106462584B (zh) |
WO (1) | WO2015165385A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108537543A (zh) * | 2018-03-30 | 2018-09-14 | 百度在线网络技术(北京)有限公司 | 区块链数据的并行处理方法、装置、设备和存储介质 |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10242058B2 (en) * | 2015-07-14 | 2019-03-26 | International Business Machines Corporation | Access path optimization through system statistics |
WO2017156673A1 (zh) * | 2016-03-14 | 2017-09-21 | 华为技术有限公司 | 一种存储过程处理方法及装置 |
CN110121704B (zh) | 2016-12-30 | 2021-09-21 | 华为技术有限公司 | 一种用于存储过程的执行方法、设备以及系统 |
CN116628004B (zh) * | 2023-05-19 | 2023-12-08 | 北京百度网讯科技有限公司 | 信息查询方法、装置、电子设备及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7529759B2 (en) * | 2004-05-21 | 2009-05-05 | Bea Systems, Inc. | System and method for batch operation of CMP beans |
US20100082646A1 (en) * | 2008-09-26 | 2010-04-01 | Microsoft Corporation | Tracking constraints and dependencies across mapping layers |
US7890545B1 (en) * | 2005-03-31 | 2011-02-15 | Troux Technologies | Method and system for a reference model for an enterprise architecture |
CN103324765A (zh) * | 2013-07-19 | 2013-09-25 | 西安电子科技大学 | 一种基于列存储的多核并行数据查询优化方法 |
CN103714058A (zh) * | 2012-09-28 | 2014-04-09 | Sap股份公司 | 数据库查询的优化 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA2326513C (en) * | 1998-03-27 | 2009-06-16 | Informix Software, Inc. | Processing precomputed views |
MXPA06009355A (es) | 2004-02-21 | 2007-03-01 | Datallegro Inc | Base de datos paralela ultra - nada compartida. |
US9218209B2 (en) * | 2008-12-31 | 2015-12-22 | Pivotal Software, Inc. | Apparatus and method for parallel processing of a query |
CN102662946B (zh) | 2012-02-20 | 2015-10-07 | 北京地拓科技发展有限公司 | 一种自动监测数据库中记录变化的方法和系统 |
-
2014
- 2014-04-29 US US14/264,851 patent/US9552390B2/en active Active
-
2015
- 2015-04-28 CN CN201580013930.3A patent/CN106462584B/zh active Active
- 2015-04-28 EP EP15785652.7A patent/EP3114590B1/en active Active
- 2015-04-28 WO PCT/CN2015/077717 patent/WO2015165385A1/en active Application Filing
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7529759B2 (en) * | 2004-05-21 | 2009-05-05 | Bea Systems, Inc. | System and method for batch operation of CMP beans |
US7890545B1 (en) * | 2005-03-31 | 2011-02-15 | Troux Technologies | Method and system for a reference model for an enterprise architecture |
US20100082646A1 (en) * | 2008-09-26 | 2010-04-01 | Microsoft Corporation | Tracking constraints and dependencies across mapping layers |
CN103714058A (zh) * | 2012-09-28 | 2014-04-09 | Sap股份公司 | 数据库查询的优化 |
CN103324765A (zh) * | 2013-07-19 | 2013-09-25 | 西安电子科技大学 | 一种基于列存储的多核并行数据查询优化方法 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108537543A (zh) * | 2018-03-30 | 2018-09-14 | 百度在线网络技术(北京)有限公司 | 区块链数据的并行处理方法、装置、设备和存储介质 |
CN108537543B (zh) * | 2018-03-30 | 2023-07-28 | 百度在线网络技术(北京)有限公司 | 区块链数据的并行处理方法、装置、设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
EP3114590A4 (en) | 2017-04-19 |
WO2015165385A1 (en) | 2015-11-05 |
EP3114590A1 (en) | 2017-01-11 |
US20150310065A1 (en) | 2015-10-29 |
US9552390B2 (en) | 2017-01-24 |
CN106462584B (zh) | 2019-11-29 |
EP3114590B1 (en) | 2018-12-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Schultz-Møller et al. | Distributed complex event processing with query rewriting | |
CN106462584B (zh) | 存储过程中多查询乱序执行的系统和方法 | |
US10642832B1 (en) | Reducing the domain of a subquery by retrieving constraints from the outer query | |
US8224845B2 (en) | Transaction prediction modeling method | |
US10268638B2 (en) | Limiting plan choice for database queries using plan constraints | |
US9563663B2 (en) | Fast path evaluation of Boolean predicates | |
US20140201225A1 (en) | Variable duration non-event pattern matching | |
US9135310B2 (en) | Query routing in a distributed database system | |
US20230244999A1 (en) | Automated versioning and evaluation of machine learning workflows | |
US20150154255A1 (en) | Estimating Statistics for Generating Execution Plans for Database Queries | |
US20070179959A1 (en) | Automatic discovery of data relationships | |
US20130139164A1 (en) | Business Process Optimization | |
CN104899295B (zh) | 一种异构数据源数据关联分析方法 | |
WO2016133855A1 (en) | System and method for generating an effective test data set for testing big data applications | |
US20130138473A1 (en) | Business Process Optimization | |
CN101178727A (zh) | 用于搜索数据库的方法和系统 | |
US20150149436A1 (en) | Rewrite Constraints For Database Queries | |
CN102479255B (zh) | 用于优化数据库查询的方法和系统 | |
US10949440B2 (en) | Metadata-driven data management platform | |
CN112000350B (zh) | 一种动态规则更新方法、装置及存储介质 | |
CN110019314B (zh) | 基于数据项分析的动态数据封装方法、客户端和服务端 | |
CN109522341A (zh) | 实现基于sql的流式数据处理引擎的方法、装置、设备 | |
US20130031139A1 (en) | Multi-input, multi-output-per-input user-defined-function-based database operations | |
WO2013157144A1 (ja) | プログラム、情報処理装置およびイベント処理方法 | |
CN108255852B (zh) | Sql执行方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |