CN116569163A - 调度关系数据库上的查询执行计划 - Google Patents
调度关系数据库上的查询执行计划 Download PDFInfo
- Publication number
- CN116569163A CN116569163A CN202180082548.3A CN202180082548A CN116569163A CN 116569163 A CN116569163 A CN 116569163A CN 202180082548 A CN202180082548 A CN 202180082548A CN 116569163 A CN116569163 A CN 116569163A
- Authority
- CN
- China
- Prior art keywords
- data
- partition
- query
- rdbs
- query execution
- 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.)
- Pending
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/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
- G06F16/24534—Query rewriting; Transformation
- G06F16/24539—Query rewriting; Transformation using cached or materialised query results
-
- 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/24532—Query optimisation of parallel queries
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Operations Research (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
一种用于调度第一查询执行计划和第二查询执行计划的方法、计算机程序产品和系统,第一查询执行计划用于执行用于访问关系数据库系统(RDBS)的第一数据集的第一查询,第二查询执行计划用于执行用于访问第二数据集的第二查询。该数据被划分为数据的数据集的数据块,其中RDBS的元数据包括关于所述数据块的相应数据块的数据集的至少一个特性的相应信息。该调度可以基于检查在可以满足根据第一查询的第一条件的数据块的第一分区与可以满足根据第二查询的第二条件的数据块的第二分区之间是否存在公共分区而被执行。
Description
背景技术
本公开涉及数据库技术领域,并且更具体地,涉及一种用于调度用于访问关系数据库系统的数据集的查询的方法。
关系数据库系统包括彼此链接的数据表。查询被用于基于以表达式和谓词形式制定的准则来检索和更新数据集。关系数据库系统的查询优化器可以针对谓词优化查询。例如,可以根据谓词估计用于执行不同变体以对数据库系统执行查询的计算成本,并且可以关于计算成本的降低来优化查询。然后,可以将经优化的查询转换成查询执行计划。查询执行计划可以通过使用关系数据库系统的工作负载管理器来调度。
发明内容
各种实施例提供了如独立权利要求的主题所描述的计算机系统和方法。在从属权利要求中描述了有利的实施例。如果本公开的实施例不是相互排斥的,则它们可以彼此自由地组合。
在一个方面,本公开涉及一种用于调度查询执行计划集合的方法,该查询执行计划集合至少包括用于执行第一查询的第一查询执行计划和用于执行第二查询的第二查询执行计划,第一查询用于访问关系数据库系统RDBS的数据的第一数据集,第二查询用于访问该数据的第二数据集,该数据被划分成该数据的数据集的数据块,其中RDBS的元数据包括关于该数据块的相应数据块的数据集的至少一个特性的相应信息。该方法包括
当第一查询执行计划基于元数据和根据第一查询第一数据集必须满足的条件而在RDBS上被执行的情况下,确定数据块的第一分区潜在正在被访问;
当第二查询执行计划基于元数据和根据第二查询第二数据集必须满足的条件而在RDBS上被执行的情况下,确定数据块的第二分区潜在正在被访问;
如果存在第一分区和第二分区的数据块的公共分区,则执行检查;
基于检查的结果调度RDBS上的第一查询执行计划和第二查询执行计划。
在另一方面,本公开涉及一种计算机程序产品,其包括具有计算机可读程序代码的计算机可读存储介质,计算机可读程序代码被配置为实现根据前述实施例的方法。
在另一方面,本公开涉及一种用于调度查询执行计划集合的计算机系统,该查询执行计划集合至少包括用于执行第一查询的第一查询执行计划和用于执行第二查询的第二查询执行计划,第一查询用于访问关系数据库系统(RDBS)的第一数据集,第二查询用于访问数据的第二数据集,该数据被划分成该数据的数据集的数据块,其中RDBS的元数据包括关于数据块的相应数据块的数据集的至少一个特性的相应信息。计算机系统可以被配置用于
当第一查询执行计划基于元数据和根据第一查询第一数据集必须满足的条件而在RDBS上被执行的情况下,确定数据块的第一分区潜在正在被访问;
当第二查询执行计划基于元数据和根据第二查询第二数据集必须满足的条件而在RDBS上被执行的情况下,确定数据块的第二分区潜在正在被访问;
如果存在第一分区和所述第二分区的数据块的公共分区,则执行检查;
基于检查的结果调度RDBS上的第一查询执行计划和第二查询执行计划。
附图说明
仅通过示例的方式,参考附图更详细地解释本公开的以下实施例,其中:
图1示出了根据本主题的计算机系统;
图2描述了连接到图1的计算机系统的网络;
图3描述了关系数据库系统;
图4描述了图3的关系数据库系统的数据表,其示出了根据第一用例的数据块的第一分区的组成和数据块的第二分区的组成;
图5描述了指示图4的数据表的数据块的元数据的表;
图6描述了用于在RDBS上调度第一查询执行计划和第二查询执行计划的调度表;
图7示出了根据第二用例的数据块的第一分区的组成和数据块的第二分区的组成;
图8描述了用于在RDBS上调度第一查询执行计划和第二查询执行计划的另一调度表;
图9示出了根据另一变体的用于在RDBS上调度第一查询执行计划和第二查询执行计划的调度表;
图10描述了指示图7的数据表的数据块的另外的元数据的表;
图11示出了根据第一用例的另一变体的数据块的第一分区的组成和数据块的第二分区的组成;
图12示出了根据第二用例的另一变体的数据块的第一分区的组成和数据块的第二分区的组成;
图13描述了用于在RDBS上调度第一查询执行计划和第二查询执行计划的计算机实现的方法的流程图。
具体实施方式
本公开涉及数据库技术领域,并且更具体地,涉及一种用于调度用于访问关系数据库系统的数据集的查询的方法。本公开的各种实施例的描述将出于说明的目的而呈现,但不旨在是穷举的或限于所公开的实施例。在不背离所描述的实施例的范围和精神的情况下,许多修改和变化对于本领域的普通技术人员将是显而易见的。选择本文所使用的术语以最好地解释实施例的原理、实际应用或对市场上存在的技术改进,或使本领域的其他普通技术人员能够理解本文所公开的实施例。
本文中使用的术语关系数据库系统(RDBS)也被称为关系数据库管理系统(RDBMS)。另外,在下文中,术语第一查询执行计划和第二查询执行计划也可以分别称为第一计划和第二计划。此外,第一分区和第二分区的数据块的公共分区在下文中也可以称为公共分区。检查公共分区是否存在也可以称为检查。
根据第一查询第一数据集必须满足的条件在下文中也被称为第一条件。类似地,根据第二查询第二数据集必须满足的条件在下文中也被称为第二条件。第一计划包括用于访问(即,读取)第一数据集和/或用于改变第一数据集的命令。类似地,第二计划包括用于访问(即,读取)第二数据集和/或用于改变第二数据集的命令。可以使用RDBS的查询编译器分别基于第一查询和第二查询生成第一计划和第二计划。第一和第二查询分别包括包含第一条件的第一语句和包含第二条件的第二语句。
基于检查的结果来调度第一计划和第二计划具有以下优点。首先,如果没有公共分区,则数据的单个数据集只能通过在RDBS上执行第一计划或通过执行第二计划来访问。换句话说,一个数据集不能通过运行第一计划而第一次被访问,并且然后通过运行第二计划而第二次被访问,反之亦然。因此,声明不存在公共分区可以等效于声明不存在在执行第一计划时可以被访问并且在执行第二计划时也可以被访问的任何数据集。这意味着如果没有公共分区,则第一计划和第二计划的执行相对于数据的数据集彼此隔离。
例如,第一计划不能引起数据的数据集中的一个数据集的更新,其可以通过执行第二计划来读取,反之亦然。因此,如果公共分区存在则执行检查可以保证第一计划相对于第二计划的隔离,如果不存在公共分区则考虑数据的数据集。这可以在并行执行第一和第二计划时降低RDBS的计算成本。
例如,如果没有公共分区,则RDBS的锁定机制可引起第一计划和第二计划在RDBS上的不同执行,该锁定机制用于锁定数据块的第一分区和/或数据块的第二分区的至少一部分,使得这些数据块在某一时刻仅可通过执行单个查询执行计划来访问。如果没有公共分区,则当并行执行第一和第二计划时,锁定机制可以例如不锁定数据块的第一分区和/或第二分区。
然而,如果存在公共分区,则当并行执行第一和第二计划时,锁定机制可以锁定数据块的第一分区和/或第二分区。因此,如果不存在公共分区,则可以减少用于锁定数据块的第一分区和/或第二分区的所需计算负载。如果第一计划和第二计划访问RDBS的相同数据表,这是有利的。
通常,如果第一计划和第二计划访问相同的数据表,则锁定机制被激活。然而,本公开的实施例可以克服这个缺点,使得如果当第一计划和第二计划访问相同的数据表时没有公共分区,则可以停用锁定机制。当没有访问公共分区时,保证访问隔离。
在一些实施例中,基于元数据执行确定由第一和第二分区访问的数据块。另外,可以基于检查的结果来执行调度。来自检查的关于数据的信息也可以用于调度。该信息可以用于减少对第一和/或第二计划的执行的限制。限制的减少可以导致第一和/或第二分区的锁定的解除。限制的减少通常可以减少计算资源和时间。
此外,当在计划之间不存在公共分区时,不必调度第一计划和第二计划,使得这些计划相对于它们的执行时间不重叠。通常,这可以被完成以便防止锁定机制被激活,例如,如果第一计划和第二计划访问相同的数据表。因此,如果没有公共分区,则可以减少或丢弃关于调度的限制。在这种情况下,可以将对该查询执行计划集合的调度的优化简化为多个限制,这些限制可以被认为是用于优化计划的调度的边界条件。
此外,如果存在公共分区,则第一计划的结果可以用于第二计划,反之亦然。结果,可以减少在执行第一和第二计划时访问的数据集的数目。从而潜在地降低了计算成本。
在一些实施例中,基于具有第一条件的元数据来确定第一分区是否包括丢弃数据块的第一互补分区,第一条件使得根据第一查询第一数据集必须满足第一条件。数据块的第一互补分区可以表示当在RDBS上执行第一查询执行计划时没有正在被访问的数据的数据块。此外,在一些实施例中,确定第二分区是否包括使用元数据和根据第二查询第二数据集必须满足的第二条件丢弃数据块的第二互补分区。数据块的第二互补分区可以表示在RDBS上执行第二查询执行计划的情况下没有正在被访问的数据的数据块。第一互补分区被认为是第一分区的互补,反之亦然。这意味着第一分区和第一互补分区不相交,并且可以一起构建数据。类似地,第二互补分区被认为是第二分区的互补,反之亦然。这意味着第二分区和第二互补分区不相交,并且还一起构建数据。
确定第一分区是否丢弃第一互补分区是有利的,因为不必为了创建第一互补分区而找到在执行第一计划时未被访问的所有数据块。相反,如果第一互补分区不是通过丢弃第一互补分区来确定的,则必须找到在执行第一计划的情况下潜在被访问的所有可能的数据块,以便在检查的结果暗示这样做的情况下安全地声明不存在公共分区。为了实现这一点,必须针对第一条件检查数据的所有相应数据块的元数据。为了完成这种程序,可能花费更长的时间,特别是如果数据块非常小并且众多的话。
然而,第一互补分区的生成可以在任何时间被中止并且不必完成。在这种情况下,如果第一分区被确定为第一互补分区的互补,则如果结果是没有公共分区,则检查的结果可以被认为是确定的。因此,该实施例可以加速生成第一分区。类似地,通过丢弃第二互补分区来确定第二分区可以导致针对应用于第二分区、第二条件和第二互补分区的相同推理的相同优点。元数据可以被认为是与例如索引数据的每个数据集的索引相比关于数据的紧凑得多的信息。如果数据的数据集中的一个数据集可以满足第一或第二条件,则这种紧凑信息可能不是非常适合于检查。然而,元数据形式的这种紧凑信息对于丢弃数据集的数据块可能是非常有用的,为了测试这些数据集上的第一或第二条件,可能不访问这些数据块。这种效果可以用于调度。
在一些实施例中,该方法还包括调度第一查询执行计划和第二查询执行计划,使得如果存在第一分区和第二分区的数据块的公共分区,则第一查询执行计划的结果在RDBS的高速缓存中可用于第二查询执行计划的使用。例如,第一计划和第二计划可被调度,使得当第二计划在RDBS上执行时,第一计划的结果的至少一部分被存储在高速缓冲存储器中,或者如果公共分区存在,则反之亦然。该实施例可以确保第一计划的结果的至少一部分可以用于执行第二计划,或者如果存在公共分区,则反之亦然。调度可以根据高速缓冲存储器上可用的实际空间和存储第一计划或第二计划的结果或部分结果的高速缓存的估计的所需大小来执行。
在一些实施例中,该方法还包括激活RDBS的锁定机制以锁定公共分区的数据块,使得这些数据块仅可通过在一个时刻执行单个查询执行计划来访问。如果存在公共分区,则可以激活锁定机制。单个执行计划可以是第一计划或第二计划。这种变体确保了数据的隔离,并且在运行第一和第二计划时被保留。如本文所使用的术语“数据的隔离”暗示该查询执行计划集合的并行执行使数据处于在这些计划被顺序地执行的情况下将获得的相同状态。
在一些实施例中,该方法还包括调度第一查询执行计划和第二查询执行计划,使得如果第一分区和第二分区的数据块没有公共分区,则在RDBS上并行执行第一查询执行计划和第二查询执行计划。第一和第二计划的并行执行可以加速查询执行计划集合的执行。在不存在公共分区的情况下,第一和第二计划可以并行执行,并且用于锁定数据块的第一分区和/或第二分区所需的计算负载可以非常低或者甚至为零。因此,锁定机制不会恶化查询执行计划集合的执行的加速。如果公共分区不存在,即公共分区的大小为零,则第一和第二计划并行运行,而没有丢失数据隔离的风险。在大多数情况下,如果没有公共分区,则不针对第一和/或第二分区激活锁定机制。
在一些实施例中,该方法包括停用RDBS的锁定机制,该锁定机制用于锁定数据块的第一分区和数据块的第二分区的至少一部分。锁定机制确保这些数据块仅通过在一个时刻执行单个查询执行计划来访问。根据实施例,如果没有公共分区,则锁定机制可以被停用。如果第一计划和第二计划并行执行,则可以执行锁定机制的停用。根据锁定机制,即使不存在公共分区,锁定机制也可以在执行第一和第二计划时分配计算资源。例如,锁定机制包括用于检查是否存在公共分区的功能。在这种情况下,如果没有公共分区,则停用锁定机制可以降低计算成本。
在一些实施例中,关于相应数据块的数据集的特性的信息是相应数据块的数据集的数据值所在的范围。该范围可以由相应数据块中的最小数据值和相应数据块中的最大数据值来限定。使用该范围作为关于相应数据块的数据集的特性的相应信息,即,使用该范围作为元数据,具有这样的优点,即,仅利用两个值,即最小和最大数据值,就提供了这些数据集的重要信息,这可以减少第一或第二计划的运行时间。例如,基于该范围,如果一个或多个相应数据块的数据集不匹配第一或第二条件,则丢弃这些数据块。各个数据块的数据集的数据值所在的范围可以表示这些数据集的最紧凑信息之一,并且还可以帮助减少第一和第二计划的运行时间。
在一些实施例中,使用数据表来存储RDBS的数据。该范围由其相应数据块中的数据表的列中的最小数据值和其相应数据块中的数据表的列中的最大数据值来限定。相应数据块可以指示数据表的行的相应块。如果范围涉及表的列的数据值,则确定第一和第二分区,特别是丢弃第一和第二互补分区,可以在更精细的级别上执行。这可以导致第一和/或第二互补分区的扩增,并且导致第一和/或第二分区的大小的减小。因此,可以降低用于执行第一和/或第二计划的计算成本。
在一些实施例中,数据集的特性可以是相应数据块内的数据值的分布。关于相应数据块的数据集的特性的相应信息可以描述数据值的分布。数据值在相应数据块内的分布可以包含关于相应块的数据集的更多信息,并且可以使得能够确定第一和第二分区,特别是在执行丢弃第一和第二互补分区期间。对于上述相同的推理,这可以减少用于执行第一和/或第二计划的计算成本。描述分布的信息包括将上述范围分成相等长度的部分的多个间隔。描述分布的信息还可以包括与每个间隔相对应的数据集的相应数目,数据集的相应数目指示包括位于相应间隔中的数据值的相应数据块的数据集的数目。备选地或附加地,描述分布的信息包括数据集的数据值的分布类型。
在一些实施例中,使用数据表来存储RDBS的数据,该数据表具有分布,该分布指的是相应数据块中的数据表的列中的数据值的分布。关于相应数据块的数据集的特性的相应信息描述了相应数据块内数据表的列中的数据值的分布。相应数据块可以指示数据表的行的相应块。这可以在执行第一和/或第二计划时增加细化的水平。类似地,细化的增加可以减少用于执行第一和/或第二计划的计算成本。
在一些实施例中,分布由密度向量表示。该向量可以表示与每个间隔相对应的相应数目的数据集的紧凑形式。
在一些实施例中,两个查询执行计划中的一个(即,第一或第二查询执行计划)可以在实际时刻运行,并且两个查询执行计划中的另一个可以被调度为在未来时刻开始。这描述了在查询执行计划中的一个(即,第一或第二计划)当前运行在RDBS上,而另一个当前没有运行但被调度为未来运行的情况下,所提出的方法的使用。因此,本公开的实施例不限于第一和第二计划在未来运行的应用,将实际时刻视为执行调度的时刻。
在一些实施例中,第一查询执行计划和第二查询执行计划被调度为在彼此之后立即运行。这可以增加第一计划的结果在RDBS的高速缓冲存储器中可用于使用第二计划的概率,反之亦然。如果存在公共分区,则该实施例是有利的。
在一些实施例中,该方法包括从RDBS的查询优化器接收元数据。查询优化器可以使用元数据用于其自己的目的,即用于优化第一和/或第二计划。为此,查询优化器可能已经将引用数据块的相应数据块的元数据从元数据库加载到查询优化器的高速缓冲存储器中。RDBS的工作负载管理器可以通过从查询优化器的高速缓冲存储器读取元数据来执行调度。这可以比再次从元数据库读取元数据更快。
在一些实施例中,该方法包括从RDBS的查询优化器接收用于指定第一分区和第二分区的信息。查询优化器可以将第一和第二查询的第一和第二语句分别与元数据相交。在这样做时,查询优化器可以检索用于指定第一分区和第二分区的信息。换句话说,这描述了已经由查询优化器计算的信息的有效使用。
在一些实施例中,该方法包括设置用于运行RDBS的查询优化器的边界条件,使得公共分区为空。如果查询优化器生成第一和第二计划,使得不存在公共分区,则可以产生上述优点。可能发生的是,第一和/或第二计划作为单个查询执行计划同样效率较低。然而,如果公共分区是空的,则计算负载的减少可以克服效率的这种降低。
本公开的实施例可以使用也可以被称为计算机系统、客户端或服务器的计算设备来实现。现在参考图1,示出了计算机系统10的示例的示意图。计算机系统10可以仅是合适的计算机系统的一个示例,并且可以不旨在对本文描述的本公开的实施例的使用范围或功能提出任何限制。无论如何,计算机系统10能够被实现和/或执行上文所阐述的任何功能。
计算机系统10包括计算机系统/服务器12,其可以与许多其他通用或专用计算系统环境或配置一起操作。可以适用于计算机系统/服务器12的公知的计算系统、环境和/或配置的示例包括但不限于,图3所示的关系数据库系统300的堆栈303、RDBS 300的查询编译器302、个人计算机系统、服务器计算机系统、瘦客户端、胖客户端、手持式或膝上型设备、多处理器系统、基于微处理器的系统、机顶盒、可编程消费电子产品、网络PC、小型机系统、大型计算机系统、以及包括上述系统或设备中的任一个的分布式计算环境等。
在一个示例中,计算机系统/服务器12可以以RDBS 300的工作负载管理器301的形式设计,如图3所示,RDBS 300包括查询编译器302,用于将诸如第一查询311和第二查询312的查询编译成查询执行计划,诸如在下文中也称为第一计划321的第一查询执行计划321和在下文中也称为第二计划322的第二查询执行计划322。
计算机系统/服务器12可以在计算机系统可执行指令的一般上下文中描述,诸如由计算机系统执行的程序模块。通常,程序模块可以包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、逻辑、数据结构等。计算机系统/服务器12可以在分布式计算环境中实践,其中任务由通过通信网络链接的远程处理设备执行。在分布式计算环境中,程序模块可以位于本地和远程计算机系统存储介质中,包括存储器存储设备。远程处理设备的一个示例可以是查询编译器302,其可以执行工作负载管理器301的任务。
如图1所示,计算机系统10中的计算机系统/服务器12以通用计算设备的形式示出。计算机系统/服务器12的组件可以包括但不限于一个或多个处理器或处理单元16、系统存储器28以及将包括系统存储器28的各种系统组件耦合到处理器16的总线18,总线18表示若干类型的总线结构中的任何一种的一个或多个,包括存储器总线或存储器控制器、外围总线、加速图形端口以及使用各种总线架构中的任何一种的处理器或局部总线。作为示例而非限制,这些架构包括工业标准架构(ISA)总线、微通道架构(MCA)总线、增强型ISA(EISA)总线、视频电子技术标准协会(VESA)局部总线、外围部件互连(PCI)总线和外围部件互连快速(PCIe)总线。
计算机系统/服务器12通常包括各种计算机系统可读介质。这样的介质可以是计算机系统/服务器12可访问的任何可用介质,并且它包括易失性和非易失性介质、可移动和不可移动介质。
系统存储器28可以包括易失性存储器形式的计算机系统可读介质,诸如随机存取存储器(RAM)30、固态驱动器(SSD)和/或高速缓冲存储器32。计算机系统/服务器12还可以包括其他可移动/不可移动、易失性/非易失性计算机系统存储介质。仅作为示例,存储系统34可被提供用于从不可移动、非易失性磁介质(未示出,并且通常被称为“硬盘驱动器”)读取和向其写入。尽管未示出,但是可以提供用于从可移动、非易失性磁盘(例如,“软盘”)读取和向其写入的磁盘驱动器,以及用于从诸如CD-ROM、DVD-ROM或其他光学介质等可移动、非易失性光盘读取或向其写入的光盘驱动器。在这种情况下,每个都可以通过一个或多个数据介质接口连接到总线18。如下文将进一步描绘及描述,存储器28可包含具有经配置以执行本发明的实施例的功能的一组(例如,至少一个)程序模块的至少一个程序产品。
具有一组(至少一个)程序模块50的程序/实用程序40,以及操作系统、一个或多个应用程序、其他程序模块和程序数据,可以存储在存储器28中,这是作为示例而非限制。操作系统、一个或多个应用程序、其他程序模块和程序数据中的每一个或其某种组合可包括联网环境的实现。程序模块50通常可经配置以执行如本文所描述的本发明的实施例的功能和/或方法。
如本文所使用的术语“程序”或“程序模块”是指一组指令,其包含当处理器16可以读取命令时由处理器16执行的激发动作的命令。该组指令可以是计算机可读程序、例程、子例程或库的一部分的形式,其可以由处理器16执行和/或可以由处理器16执行的另外的程序调用,优选地,程序模块50可以是根据计算机系统/服务器12的硬件平台的类型编译的可执行程序。
计算机系统/服务器12还可以与一个或多个外部设备14通信,诸如键盘、指示设备、显示器24等;一个或多个设备,其使得用户能够与计算机系统/服务器12交互;和/或任何使计算机系统/服务器12能够与一个或多个其他计算设备通信的设备(例如网卡、调制解调器等)。这种通信可以经由输入/输出(I/O)接口22发生,然而,计算机系统/服务器12可以经由网络适配器20与一个或多个网络通信,该网络诸如局域网(LAN)、通用广域网(WAN)和/或公共网络(例如,互联网)。如图所示,网络适配器20可以通过总线18与计算机系统/服务器12的其他组件通信,应当理解,尽管未示出,但是其他硬件和/或软件组件可以与计算机系统/服务器12结合使用,示例包括但不限于:微码、设备驱动程序、冗余处理单元、外部磁盘驱动器阵列、RAID系统、磁带驱动器和数据档案存储系统等。
诸如图1所示的计算机系统10的计算机系统可以用于执行本文公开的操作,诸如第一、第二、第三、第四、第五和第六操作。例如,处理器16可以执行第一、第二、第三、第四、第五和第六操作。
计算机系统10可被配置用于调度图3的查询执行计划集合331,该查询执行计划集合331至少包括用于执行第一查询311以访问图4中RDBS 300的数据400的第一数据集411的第一查询执行计划321,此外,该集合331包括用于执行第二查询312以访问数据400的第二数据集412的第二查询执行计划322。数据400可以被划分成数据400的数据集的数据块410。RDBS 300的元数据304包括关于各个数据块410的数据集的至少一个特性的各个信息。数据区块410例如包括第一数据区块410-1、第二数据区块410-2、第三数据区块410-3、第四数据区块410-4、第五数据区块410-5以及第六数据区块410-6,数据区块410的数据集以图4中的方框的形式表示。
第一操作包括当第一查询执行计划321基于元数据304和根据第一查询311第一数据集411必须满足的条件(在下文中称为第一条件)而在RDBS 300上被执行的情况下,确定数据块410的第一分区401潜在正在被访问。
第二操作包括当第二查询执行计划322基于元数据304和根据第二查询312第二数据集412必须满足的条件(在下文中称为第二条件)而在RDBS 300上被执行的情况下,确定数据块410的第二分区402潜在正在被访问。
第三操作包括执行检查,检查是否存在第一分区401和第二分区402的数据块的公共分区。
该第四操作包括基于检查结果在RDBS 300上调度第一查询执行计划321和第二查询执行计划322。
第五操作包括基于元数据304和第一条件通过丢弃数据块410的第一互补分区701来确定第一分区401。
第六操作包括基于元数据304和第二条件通过丢弃数据块410的第二互补分区702来确定第二分区402。
处理器16可通过分别执行第一程序模块41、第二程序模块42、第三程序模块43、第四程序模块44、第五程序模块45和第六程序模块46来执行第一、第二、第三、第四、第五和第六操作。第一处理器102可执行主程序51,主程序51启动处理器16上的程序模块41、42、43、44、45、46的执行。
计算机系统10可以是不具有网络连接的独立计算机,其可以通过本地接口接收要处理的数据,诸如第一计划321和第二计划322。然而,这种操作同样可以使用连接到诸如通信网络和/或计算网络的计算机系统来执行。
图2示出了示例性计算环境,其中诸如计算机系统10的计算机系统例如使用网络适配器20连接到网络200。RDBS 300包括网络200,并且也可以被认为是计算机系统,例如计算机系统10.RDBS 300,并且优选地RDBS 300的组件,例如查询编译器302,包括与计算机系统10的组件类似的组件,例如一个或多个处理器或处理单元,例如处理器16,系统存储器,例如系统存储器28,以及总线,例如连接各种系统组件的总线18。非限制性地,网络200可以是诸如互联网的通信网络、局域网(LAN)、诸如移动通信网络的无线网络等。网络200包括诸如云计算网络的计算网络。计算机系统10可以从网络200接收要处理的数据,例如第一计划321和第二计划322,和/或可以提供计算结果,例如包括至少第一计划321和第二计划322的执行顺序的调度表600,到经由网络200连接到计算机系统10的另一计算设备。
计算机系统10可以响应于经由网络200接收的请求,执行本文中描述的操作,例如第一、第二、第三、第四、第五和第六操作的全部或部分。特别地,计算机系统10可以与一个或多个另外的计算机系统一起在分布式计算中执行这样的操作,所述一个或多个另外的计算机系统可以经由网络200连接到计算机系统10。为此,计算系统10和/或任何另外涉及的计算机系统可以使用网络200访问另外的计算资源,诸如专用或共享存储器。
根据图4所示的示例,数据400可以以数据表420的形式存储。数据表420包括行和列430。这些行可以各自指示数据400的单个数据集,也经常被称为数据记录。因此,在图4中,随着每个数据集沿着垂直箭头421,行数可以增加一,然而,在图4的示例中,表420可以不具有行的索引。列430可以各自指定不同的特征。例如,关于相应行,第一列431可以指定相应个人的出生日期,第二列432可以指定相应个人的姓,第三列433可以指定相应个人的名,并且第四列434可以指定相应个人的信用账户的余额。因此,根据该示例,表420可以表示银行账户数据库。每个数据集包括与列430的数目一致的条目数目。数据集中的一个数据集的每个条目在图4中以框的形式指示,相应个人的出生日期可以由出生的月给出,随后是相应个人的出生的天。
在下文中,可以呈现一个示例,其中关于相应数据块410的数据集的特性的相应信息可以是相应数据块410的范围,其指示相应数据块410的数据集的数据值所位于的范围。相应的范围可以由相应的数据块410-1中的相应的最小数据值和相应的数据块410-N中的相应的最大数据值来限定。
此外,根据所呈现的附图的示例可以表示一种变体,其中相应数据块410-N的范围由相应数据块410-N内的数据表420的第一列431的相应最小数据值和相应数据块410-N内的数据表420的第一列431的相应最大数据值来限定。
元数据304包括各个数据块410的范围。元数据304可以以表的形式存储,并且包括图5所示的表500中给出的值,根据包括六个数据块的数据表420,表500包括六行。在表500的相应行中,可以存储由相应数据块410-N的数据集给出的最早出生日期和最晚出生日期。为了简单起见,仅考虑出生日期的月和天。由表500给出的元数据304可以对应于一个示例,其中数据集可以相对于第一列431的数据值排序,因此相对于个人的出生日期排序。然而,在另外的应用中可能不是这种情况。通常,上述数据类型的选择,例如生日和姓名,仅用于以简单的方式解释所提出的方法。当然,关于其他可能的应用,数据400可以涉及技术数据值,诸如材料性质的系数或用于指定化学元素、它们的行为或化学反应的数据。
本方法的第一种简单应用可以针对抽签,包括使用随机数生成器。随机数生成器可生成用于指定随机出生日期的第一集合的数据值。第一集合包括第一出生日期和第二出生日期。出生日期等于第一集合的随机出生日期中的一个的个人可以获得100美元。实现对被给予随机出生日期的第一集合的个人的信用账户的获胜的第一查询311可以用SQL语言如下公式化:
“Update data table 420
Set balance of credit account=balance of credit account+100$
Where birth date=‘first birth date’OR‘second birth date’”
第一谓词“birth date=‘first birth date’OR‘second birth date’”可以表示根据第一查询311第一数据集411必须满足的第一条件。
抽签可以涉及使用随机数生成器创建随机出生日期的第二集合。第二集合包括第三出生日期和第四出生日期。出生日期等于第二集合的随机出生日期中的一个的个人可以获得100美元。实现在给定第二集合的随机出生日期的个人的信用账户上获胜的第二查询312可以用SQL语言如下公式化:
“Update data table 420
Set balance of credit account=balance of credit account+100$
Where birth date=‘third birth date’OR‘fourth birth date’”
第二谓词“birth date=‘third birth date’OR‘fourth birth date’”可以表示根据第一查询311第二数据集合412必须满足的第二条件。
查询编译器可以将第一和第二查询311、312分别编译成第一计划321和第二计划322。第一计划321包括用于指定第一和第二随机出生日期的值以及第一可执行程序,该第一可执行程序包含用于更新满足第一条件的数据集(即,第一数据集411)的指令。这些指令包括例如用于加载第一分区401的所有数据集的第一加载命令和用于为了测试关于第一分区401的数据块的数据集的第一条件而启动比较的第一比较命令。
类似地,第二计划322包括用于指定第三和第四随机出生日期的值以及第二可执行程序,该第二可执行程序包含用于更新满足第二条件的数据集(即,第二数据集412)的指令。这些指令包括例如用于加载第二分区402的所有数据集的第二加载命令和用于为了测试关于第二分区402的数据块的数据集的第二条件而启动比较的第二比较命令。
在本方法的第一用例中,第一随机出生日期是“02.02.”,第二随机出生日期是“01.07.”,第三随机出生日期是“02.10.”,第四随机出生日期是“10.12.”。
查询编译器302可以使用元数据304(在这种情况下是表500(在另一种情况下是表1000))、第一和第二随机出生日期以及第一谓词来生成第一加载命令以加载第一分区401的所有数据集。查询编译器302可以使用第一和第二随机出生日期和元数据304来推断第一数据集411仅可能被存储在第一数据块410-1和第三数据块410-3中。类似地,查询编译器302可以生成第二加载命令以使用元数据304、第三和第四随机出生日期以及第二谓词来加载第二分区402的所有数据集。查询编译器302可以使用第三和第四随机出生日期和元数据304来推断第二数据集412仅可能被存储在第五数据块410-5和第六数据块410-6中。第一计划321和第二计划322可以从查询编译器302传送到堆栈303。
根据第一用例,在执行第一计划321的情况下潜在被访问的数据集的第一分区401包括第一数据块410-1和第三数据块410-3,此外,考虑第一用例,在执行第二计划322的情况下潜在被访问的数据集的第二分区402包括第五数据块410-5和第六数据块410-6,因此,第一用例可以表示第一分区401和第二分区401不相交的情况。图4示出了第一数据集411和第二数据集412的可能分布以及第一分区401和第二分区402对于第一用例的可能组成。
工作负载管理器301可以从查询优化器302接收用于指定第一分区401和第二分区402的信息。在该示例中,第一和第二分区401、402的确定可以由远程设备执行,这里是查询编译器302,其与工作负载管理器301相关。如果存在第一分区401和第二分区402的数据块的公共分区,则工作负载管理器301可以执行检查。考虑第一用例,该检查的结果可以是没有公共分区。在这种情况下,工作负载管理器301可以调度第一计划321和第二计划322,使得第一计划321和第二计划322在RDBS 300上并行执行。为了实现这一点,工作负载管理器301可生成调度表600,使得第一计划321和第二计划322被调度为并行运行,如图6所示,调度表600可确定RDBS 300的计算单元340的机架中的哪个计算单元可执行执行计划集合331中的哪个执行计划。机架340包括,例如,第一计算单元341、第二计算单元342、第三计算单元343、第四计算单元344和第五计算单元345。该调度包括用于机架340的每个计算单元的一个队列,即,针对第一计算单元341的第一队列601、针对第二计算单元342的第二队列602等。
第一和第二计划321、322可以被认为是计算单元的计算作业,并且在图6中以方框的形式示出,图6中未标记的方框可以指示还可以由工作负载管理器301调度的另外的计算作业。在第一用例中,调度表600可以确定第一计划321将由第一计算单元341执行并且第二计划322将由第二计算单元342执行,计划321、322两者至少部分并行地被调度。因此,对于第一用例,调度表600被设计成使得第一计划321和第二计划322存在时间重叠。在一个示例中,第一计划321和第二计划322可以被调度为同时开始。
相应队列中的一个队列的左边部分指示在相应计算单元上运行的实际计算作业被分配给该相应队列。队列从左到右延伸,按照时间顺序示出了要由各个计算单元执行的作业,每个计算单元的相应最后的作业在每个相应队列的右侧示出。
机架340的计算单元可访问RDBS 300的数据库服务器306,包括各种数据表,这些数据表包括用于执行集合331中的执行计划的数据表420,这些执行计划包括第一计划321和第二计划322。
在一个示例中,工作负载管理器301可以从查询优化器302接收第一分区401和第二分区402是否不相交的信息。在该示例中,工作负载管理器301可以仅执行调度表600的生成,并且查询编译器302可以执行所提出的方法的其他步骤。
在第一用例中,工作负载管理器301可以停用RDBS的锁定机制。锁定机制可以被配置用于锁定数据块的第一分区401和/或数据块的第二分区402的至少一部分。这些数据块的锁定可能导致在一个时刻,这些数据块仅可以由单个查询执行计划(例如,第一计划321或第二计划322)的执行访问。
在本方法的第二用例中,第一随机出生日期是“02.02.”,第二随机出生日期是“01.07.”,第三随机出生日期是“10.07.”,第四随机出生日期是“10.12.”。
根据第二用例,在执行第一计划321的情况下潜在被访问的数据集的第一分区401包括第一数据块410-1和第三数据块410-3,此外,考虑第一用例,在执行第二计划322的情况下可以潜在被访问的数据集的第二分区402包括第三数据块410-3和第六数据块410-6,因此,第二用例可以表示第一分区401和第二分区401不是不相交的情况。图7示出了第一数据集411和第二数据集412的可能分布以及第一分区401和第二分区402针对第二用例的可能组成。
类似于第一用例,工作负载管理器301可执行检查在第二用例中是否存在第一分区401和第二分区402的数据块的公共分区。考虑第二用例,该检查的结果可以是存在公共分区。公共分区包括第三数据块410-3。在这种情况下,根据第一变体,工作负载管理器301可以调度第一计划321和第二计划322,使得第一计划321的结果在RDBS300的高速缓冲存储器中可用于使用第二计划322。实现这一点的一种方式可以是工作负载管理器301生成调度表600,使得第二计划322被调度在与第一计划321相同的队列中,例如,根据第一变体的第一示例是第一队列601。这可以使得在第一计算单元341已经执行第一计划321之后并且当第一计算单元341执行第二计划322时,第一分区401的数据块的数据集可以被存储在第一计算单元341的高速缓存中。图8示出了根据第二用例的第一变体的第一示例的由工作负载管理器301生成的调度表600。
类似地,如果计划321、322两者都在第二队列602中被调度,则这可以使得在第二计算单元342已经执行第一计划321之后并且当第二计算单元342执行第二计划322时,第一分区401的数据块的数据集可以被存储在第二计算单元342的高速缓存中。
根据第二用例的第一变体的第二示例,工作负载管理器301可以调度第一计划321和第二计划322,使得第一计划321和第二计划322被调度为在彼此之后立即运行。实现这一点的一种方式可以是工作负载管理器301生成调度表600,使得第二计划322在与紧跟在第一计划321之后的第一计划321相同的队列中被调度,例如在第一队列601中。图9示出了根据第二用例的第一变体的第二示例的由工作负载管理器301生成的调度表600。此外,图9描述了调度表600的一个示例,其中第一计划321在实际时刻运行,而第二计划322被安排在未来的时刻开始。然而,根据另一示例,为了表示第二用例的第一变体的第二示例的应用,第一计划321不一定需要在实际时刻运行。
通常,考虑所有上述用例、变体和示例,在一个示例中,工作负载管理器301可以将调度表600发送到机架340处的作业管理器。在另一个示例中,工作负载管理器301可以使用调度表600在机架340上启动计算作业,例如第一计划321和/或第二计划322。在一个示例中,机架340包括工作负载管理器301。在这种情况下,工作负载管理器301可以控制和记录机架340上的计算作业。
在下文中,可以描述进一步的变体,其中数据集不是如上所述按照出生日期排序的。在此情况下,关于第一列的元数据304可以包含在图10所示的表1000中给出的值,根据包括六个数据块的数据表420,表1000包括六行。在表500的相应行中,可以存储由相应数据块410-N的数据集给出的最早出生日期和最晚出生日期。
在另一变体中,根据第一用例,即第一随机出生日期是“02.02.”,第二随机出生日期是“01.07.”,第三随机出生日期是“02.10.”,第四随机出生日期是“10.12.”,在执行第一计划321的情况下可以潜在被访问的数据集的第一分区401包括第一数据块410-1、第二数据块410-2和第三数据块410-3。此外,考虑到另一变体和第一用例,在执行第二计划322的情况下可能被访问的数据集的第二分区402包括第四数据块410-4、第五数据块410-5和第六数据块410-6。因此,考虑到另一变体,第一用例也可以表示第一分区401和第二分区401不相交的情况。图11示出了考虑另外的变体和第一用例的第一数据集411和第二数据集412的可能分布以及第一分区401和第二分区402的可能组成。
在另外的变体中,确定第一分区401包括基于元数据304和第一条件丢弃数据块410的第一互补分区701。第一互补分区701可表示在RDBS 300上执行第一计划321的情况下没有正在被访问的数据块410的数据块。此外,确定第二分区402包括基于元数据304和第二条件丢弃数据块410的第二互补分区702。第二互补分区702可表示在RDBS 300上执行第二计划322的情况下没有正在被访问的数据块410的数据块。
工作负载管理器301或查询编译器302可以使用由表1000给出的元数据304、第一和第二随机出生日期以及第一谓词来执行第一互补分区701的丢弃。类似地,工作负载管理器301或查询编译器302可以使用表1000给出的元数据304、第三和第四随机出生日期以及第二谓词来执行第二互补分区702的丢弃。例如,如果第一和第二随机出生日期不在由表1000给出的相应数据块410-N的范围内,则该数据块410-N可被丢弃以确定第一分区401。根据第一用例,第一互补分区701包括第四数据块410-4、第五数据块410-5和第六数据块410-6,然后第一分区401可以被确定为包括数据块410而没有第一互补分区701的数据块集合。类似地,可以确定第二互补分区702,并且第二分区402基于第二互补分区702。
如在第一用例的另外的变体中,第一分区401和第二分区402不相交,即,第一分区401和第二分区402的公共分区不存在,工作负载管理器301可类似于第一用例的变体执行调度,其中数据集相对于出生日期排序。
考虑另外的变体和第二用例,即,第一随机出生日期是“02.02.”,第二随机出生日期是“01.07.”,第三随机出生日期是“10.07.”,第四随机出生日期是“10.12.”,在执行第一计划321的情况下可以潜在被访问的数据集的第一分区401包括第一数据块410-1、第二数据块410-2和第三数据块410-3。此外,考虑另外的变体和第二用例,在执行第二计划322的情况下可以潜在被访问的数据集的第二分区402包括所有数据块410。因此,考虑另外的变体,第二用例也可以表示第一分区401和第二分区401不是不相交的情况。图12示出了考虑另外的变体和第二用例的第一数据集411和第二数据集412的可能分布以及第一分区401和第二分区402的可能组成。
如在第二用例的另外的变体中,第一分区401和第二分区402不是不相交,即,存在第一分区401和第二分区402的公共分区,工作负载管理器301可类似于第二用例的变体执行调度,其中数据集相对于出生日期排序。
图13示出了用于调度查询执行计划的集合331的计算机实现的方法的流程图。
在步骤1001中,基于元数据304和第一条件,在第一查询执行计划321在RDBS 300上被执行的情况下潜在地正在被访问的数据块的第一分区401可以被确定。
在步骤1002,基于元数据304和第二条件,在第二查询执行计划322在RDBS 300上被执行的情况下潜在地正在被访问的数据块的第二分区402可以被确定。
在步骤1003中,可以执行检查第一分区401和第二分区402的数据块是否存在公共分区。
在步骤1004中,可以基于检查结果在RDBS 300上调度第一查询执行计划321和第二查询执行计划322。
本公开可以是任何可能的技术细节集成水平的系统、方法和/或计算机程序产品。计算机程序产品可以包括其上具有计算机可读程序指令的计算机可读存储介质(或多个介质),所述计算机可读程序指令用于使处理器执行本公开的方面。计算机可读存储介质可以是能够保留和存储由指令执行设备使用的指令的有形设备。
计算机可读存储介质可以是例如但不限于电子存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或前述的任何合适的组合。计算机可读存储介质的更具体示例的非穷举列表包括以下:便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式光盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、诸如上面记录有指令的打孔卡或凹槽中的凸起结构的机械编码装置,以及上述的任何适当组合。如本文所使用的计算机可读存储介质不应被解释为暂时性信号本身,诸如无线电波或其他自由传播的电磁波、通过波导或其他传输介质传播的电磁波(例如,通过光纤线缆的光脉冲)、或通过导线传输的电信号。
本文描述的计算机可读程序指令可以从计算机可读存储介质下载到相应的计算/处理设备,或者经由网络,例如互联网、局域网、广域网和/或无线网络,下载到外部计算机或外部存储设备。网络包括铜传输电缆、光传输光纤、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或网络接口从网络接收计算机可读程序指令,并转发计算机可读程序指令以存储在相应计算/处理设备内的计算机可读存储介质中。
用于执行本公开的操作的计算机可读程序指令可以是汇编指令、指令集架构(ISA)指令、机器相关指令、微代码、固件指令、状态设置数据、集成电路的配置数据,或者以一种或多种编程语言(包括面向对象的编程语言,诸如Smalltalk、C++等)和过程式编程语言(诸如“C”编程语言或类似的编程语言)的任何组合编写的源代码或目标代码。计算机可读程序指令可以完全在用户的计算机上执行,部分在用户的计算机上执行,作为独立的软件包执行,部分在用户的计算机上并且部分在远程计算机上执行,或者完全在远程计算机或服务器上执行。在后一种情况下,远程计算机可以通过任何类型的网络连接到用户的计算机,包括局域网(LAN)或广域网(WAN),或者可以连接到外部计算机(例如,使用互联网服务提供商通过互联网)。在一些实施例中,包括例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA)的电子电路可以通过利用计算机可读程序指令的状态信息来执行计算机可读程序指令以使电子电路个性化,以便执行本公开的方面。
本文参考根据本公开的实施例的方法、装置(系统)和计算机程序产品的流程图图示和/或框图来描述本公开的方面。将理解,流程图和/或框图的每个框以及流程图和/或框图中的框的组合可以由计算机可读程序指令来实现。
这些计算机可读程序指令可以被提供给计算机或其他可编程数据处理装置的处理器以产生机器,使得经由计算机或其他可编程数据处理装置的处理器执行的指令创建用于实现流程图和/或框图的一个或多个框中指定的功能/动作的装置。这些计算机可读程序指令还可以存储在计算机可读存储介质中,其可以引导计算机、可编程数据处理装置和/或其他设备以特定方式工作,使得其中存储有指令的计算机可读存储介质包括制品,该制品包括实现流程图和/或框图的一个或多个框中指定的功能/动作的各方面的指令。
计算机可读程序指令还可以被加载到计算机、其他可编程数据处理装置或其他设备上,以使得在计算机、其他可编程装置或其他设备上执行一系列操作步骤,以产生计算机实现的过程,使得在计算机、其他可编程装置或其他设备上执行的指令实现流程图和/或框图的一个或多个框中指定的功能/动作。
附图中的流程图和框图示出了根据本公开的各种实施例的系统、方法和计算机程序产品的可能实现的架构、功能和操作。在这点上,流程图或框图中的每个框可以表示指令的模块、段或部分,其包括用于实现指定的逻辑功能的一个或多个可执行指令。在一些替代实施方案中,框中所注明的功能可不按图中所注明的次序发生。例如,连续示出的两个框实际上可以作为一个步骤来实现,同时、基本同时、以部分或全部时间重叠的方式执行,或者这些框有时可以以相反的顺序执行,这取决于所涉及的功能。还将注意,框图和/或流程图图示的每个框以及框图和/或流程图图示中的框的组合可以由执行指定功能或动作或执行专用硬件和计算机指令的组合的专用的基于硬件的系统来实现。
在下文中,将通过突出本文公开的特征的若干可能的、非排他性的组合的条款列表来再次描述本公开:
一种用于调度查询执行计划集合的计算机实现的方法,所述查询执行计划集合至少包括用于执行用于访问关系数据库系统RDBS的数据的第一数据集的第一查询的第一查询执行计划,以及用于执行用于访问所述数据的第二数据集的第二查询的第二查询执行计划,所述数据被划分成所述数据的数据集的数据块,其中所述RDBS的元数据包括关于所述数据块的相应数据块的所述数据集的至少一个特性的相应信息,所述方法包括:
当所述第一查询执行计划基于所述元数据和根据所述第一查询所述第一数据集必须满足的条件在所述RDBS上被执行时,确定所述数据块的第一分区正在被访问;
当所述第二查询执行计划基于所述元数据和根据所述第二查询所述第二数据集必须满足的另一条件在所述RDBS上被执行时,确定所述数据块的第二分区正在被访问;
如果存在所述第一分区和所述第二分区的数据块的公共分区,则执行检查;
基于所述检查的结果在所述RDBS上调度所述第一查询执行计划和所述第二查询执行计划。
根据条款1所述的方法,所述第一分区的确定包括基于所述元数据和根据所述第一查询所述第一数据集必须满足的所述条件来丢弃所述数据块的第一互补分区,所述数据块的所述第一互补分区表示在所述第一查询执行计划在所述RDBS上被执行的情况下所述数据的数据块没有正在被访问,并且所述第二分区的所述确定包括使用所述元数据和根据所述第二查询所述第二数据集必须满足的所述条件来丢弃所述数据块的第二互补分区,所述数据块的所述第二互补分区表示在所述第二查询执行计划在所述RDBS上被执行的情况下所述数据的数据块没有正在被访问。
根据条款1或2所述的方法,所述方法还包括调度所述第一查询执行计划和所述第二查询执行计划,使得如果不存在所述第一分区和所述第二分区的数据块的公共分区时,所述第一查询执行计划和所述第二查询执行计划在所述RDBS上并行地被执行。
根据条款1或2所述的方法,所述方法还包括调度所述第一查询执行计划和所述第二查询执行计划,使得如果存在所述第一分区和所述第二分区的数据块的公共分区,则所述第一查询执行计划的结果在所述RDBS的高速缓冲存储器中可用于所述第二查询执行计划的使用。
根据条款1、2或3所述的方法,所述方法还包括停用RDBS的锁定机制,所述锁定机制用于锁定数据块的第一分区和数据块的第二分区的至少一部分,所述锁定机制引起这些数据块在一个时刻仅可由单个查询执行计划的执行访问,其中如果第一分区和第二分区的数据块没有公共分区,则停用锁定机制。
根据条款1、2或4所述的方法,该方法还包括激活RDBS的锁定机制,该锁定机制用于锁定公共分区的数据块,使得这些数据块在一个时刻仅可由单个查询执行计划的执行访问,其中如果存在第一分区和第二分区的数据块的公共分区,则激活锁定机制。
根据前述条款中的一项所述的方法,其中关于相应数据块的数据集的特性的相应信息是相应数据块的数据集的数据值所在的范围,该范围由相应数据块中的最小数据值和相应数据块中的最大数据值限定。
根据条款7所述的方法,其中RDBS的数据通过使用数据表存储在RDBS中,并且范围由相应数据块中的数据表的列中的最小数据值和相应数据块中的数据表的列中的最大数据值来限定,相应数据块指示数据表的行的相应块。
根据前述条款1至6中一项所述的方法,其中数据集的特性是数据集的数据值在相应数据块内的分布,并且关于相应数据块的数据集的特性的相应信息描述数据值的分布。
根据条款9所述的方法,其中RDBS的数据通过使用数据表存储在RDBS中,并且分布指的是相应数据块中的数据表的列中的数据值的分布,并且关于相应数据块的数据集的特性的相应信息描述相应数据块内的数据表的列中的数据值的分布,相应数据块指示数据表的行的相应块。
根据条款9或10所述的方法,其中分布由密度向量表示。
根据前述条款中的一项所述的方法,其中所述两个查询执行计划中的一个查询执行计划,即所述第一查询执行计划或所述第二查询执行计划,在实际时刻运行,并且所述两个查询执行计划中的另一个查询执行计划被调度为在未来时刻开始。
根据条款1、2、4、6、7、8、9、10、11或12所述的方法,其中第一查询执行计划和第二查询执行计划被调度为在彼此之后立即运行。
根据前述条款中的一项所述的方法,所述方法还包括从所述RDBS的查询优化器接收所述元数据。
根据前述条款中的一项所述的方法,所述方法还包括从所述RDBS的查询优化器接收用于指定所述第一分区和所述第二分区的信息。
根据前述条款中的一项所述的方法,所述方法还包括设置用于运行所述RDBS的查询优化器的边界条件,使得所述公共分区为空。
一种计算机程序产品,包括计算机可读存储介质,所述计算机可读存储介质具有以其体现的计算机可读程序代码,所述计算机可读程序代码被配置为实现根据前述条款中的一项所述的方法。
一种用于调度查询执行计划集合的计算机系统,所述查询执行计划集合至少包括用于执行第一查询的第一查询执行计划和用于执行第二查询的第二查询执行计划,所述第一查询用于访问关系数据库系统RDBS的数据的第一数据集,所述第二查询用于访问所述数据的第二数据集,所述数据被划分成所述数据的数据集的数据块,其中所述RDBS的元数据包括关于所述数据块的相应数据块的数据集的至少一个特性的相应信息,所述计算机系统被配置用于:当所述第一查询执行计划基于所述元数据和根据所述第一查询所述第一数据集必须满足的条件在所述RDBS上被执行时,确定所述数据块的第一分区正在被访问;当所述第二查询执行计划基于所述元数据和根据所述第二查询所述第二数据集必须满足的另一条件在所述RDBS上被执行时,确定所述数据块的第二分区正在被访问;如果存在所述第一分区和所述第二分区的数据块的公共分区,则执行检查;基于所述检查的结果在所述RDBS上调度所述第一查询执行计划和所述第二查询执行计划。
Claims (20)
1.一种用于调度查询执行计划集合的计算机实现的方法,所述查询执行计划集合至少包括用于执行第一查询的第一查询执行计划和用于执行第二查询的第二查询执行计划,所述第一查询用于访问关系数据库系统(RDBS)的数据的第一数据集,所述第二查询用于访问所述数据的第二数据集,所述数据被划分成所述数据的数据集的数据块,其中所述RDBS的元数据包括关于所述数据块中的相应数据块的所述数据集的至少一个特性的相应信息,所述方法包括:
当所述第一查询执行计划基于所述元数据和根据所述第一查询所述第一数据集必须满足的条件在所述RDBS上被执行时,确定所述数据块的第一分区正在被访问;
当所述第二查询执行计划基于所述元数据和根据所述第二查询所述第二数据集必须满足的另一条件在所述RDBS上被执行时,确定所述数据块的第二分区正在被访问;
检查是否存在所述第一分区和所述第二分区的数据块的公共分区;以及
基于检查,在所述RDBS上调度所述第一查询执行计划和所述第二查询执行计划。
2.根据权利要求1所述的方法,其中所述第一分区的确定包括基于所述元数据和根据所述第一查询所述第一数据集必须满足的所述条件来丢弃所述数据块的第一互补分区,所述数据块的所述第一互补分区表示在所述第一查询执行计划在所述RDBS上被执行的情况下所述数据的数据块没有正在被访问,并且所述第二分区的所述确定包括使用所述元数据和根据所述第二查询所述第二数据集必须满足的所述条件来丢弃所述数据块的第二互补分区,所述数据块的所述第二互补分区表示在所述第二查询执行计划在所述RDBS上被执行的情况下所述数据的数据块没有正在被访问。
3.根据权利要求1所述的方法,还包括:
调度所述第一查询执行计划和所述第二查询执行计划,使得当没有所述第一分区和所述第二分区的数据块的公共分区时,所述第一查询执行计划和所述第二查询执行计划在所述RDBS上并行地被执行。
4.根据权利要求1所述的方法,还包括:
调度所述第一查询执行计划和所述第二查询执行计划,使得当所述第一分区和所述第二分区的数据块的公共分区时,所述第一查询执行计划的结果在所述RDBS的高速缓存存储器中可用于所述第二查询执行计划的使用。
5.根据权利要求1所述的方法,还包括:
停用所述RDBS的锁定机制,所述锁定机制用于锁定所述数据块的所述第一分区和所述数据块的所述第二分区的至少一部分,所述锁定机制引起这些数据块在一个时刻仅可由单个查询执行计划的执行访问,其中如果不存在所述第一分区和所述第二分区的数据块的公共分区,则所述锁定机制被停用。
6.根据权利要求1所述的方法,还包括:
激活所述RDBS的锁定机制使得这些数据块在一个时刻仅由单个查询执行计划的执行访问,所述锁定机制用于锁定所述公共分区的所述数据块,其中当所述第一分区和所述第二分区的数据块的公共分区时,所述锁定机制被激活。
7.根据权利要求1所述的方法,其中关于所述相应数据块的所述数据集的所述特性的所述相应信息是所述相应数据块的所述数据集的数据值所在的范围,所述范围由所述相应数据块中的最小数据值和所述相应数据块中的最大数据值限定。
8.根据权利要求7所述的方法,其中所述RDBS的所述数据通过使用数据表而被存储在所述RDBS中,并且所述范围由在所述相应数据块中所述数据表的列中的最小数据值和在所述相应数据块中所述数据表的所述列中的最大数据值限定,所述相应数据块指示所述数据表的行的相应块。
9.根据权利要求1所述的方法,其中所述数据集的所述特性是在所述相应数据块内所述数据集的数据值的分布,并且关于所述相应数据块的所述数据集的所述特性的所述相应信息描述所述数据值的所述分布。
10.根据权利要求9所述的方法,其中所述RDBS的所述数据使用数据表而被存储在所述RDBS中,并且所述分布是指在所述相应数据块中所述数据表的列中的所述数据值的分布,并且关于所述相应数据块的所述数据集的所述特性的所述相应信息描述在所述相应数据块内所述数据表的所述列中的所述数据值的所述分布,所述相应数据块指示所述数据表的行的相应块。
11.根据权利要求9所述的方法,其中所述分布由密度向量表示。
12.根据权利要求1所述的方法,其中所述两个查询执行计划中的一个查询执行计划,所述第一查询执行计划或所述第二查询执行计划,正在实际时刻运行,并且所述两个查询执行计划中的另一查询执行计划被调度为在未来时刻被开始。
13.根据权利要求4所述的方法,其中所述第一查询执行计划和所述第二查询执行计划被调度为在彼此之后立即运行。
14.根据权利要求1所述的方法,所述方法还包括:从所述RDBS的查询优化器接收所述元数据。
15.根据权利要求1所述的方法,所述方法还包括:从所述RDBS的查询优化器接收用于指定所述第一分区和所述第二分区的信息。
16.根据权利要求1所述的方法,所述方法还包括:设置用于运行所述RDBS的查询优化器的边界条件,使得所述公共分区为空。
17.一种用于调度查询执行计划集合的计算机程序产品,所述查询执行计划集合至少包括用于执行第一查询的第一查询执行计划和用于执行第二查询的第二查询执行计划,所述第一查询用于访问关系数据库系统(RDBS)的数据的第一数据集,所述第二查询用于访问所述数据的第二数据集,所述数据被划分成所述数据的数据集的数据块,其中所述RDBS的元数据包括关于所述数据块的相应数据块的所述数据集的至少一个特性的相应信息,所述计算机程序产品包括:
一个或多个计算机可读存储介质,以及被存储在所述一个或多个计算机可读存储介质上的程序指令,所述程序指令包括:
用以当所述第一查询执行计划基于所述元数据和根据所述第一查询所述第一数据集必须满足的条件在所述RDBS上被执行时,确定所述数据块的第一分区正在被访问的程序指令;
用以当所述第二查询执行计划基于所述元数据和根据所述第二查询所述第二数据集必须满足的另一条件在所述RDBS上被执行时,确定所述数据块的第二分区正在被访问的程序指令;
用以检查是否存在所述第一分区和所述第二分区的数据块的公共分区的程序指令;以及
用以基于检查,在所述RDBS上调度所述第一查询执行计划和所述第二查询执行计划的程序指令。
18.一种用于调度查询执行计划集合的计算机系统,所述查询执行计划集合至少包括用于执行第一查询的第一查询执行计划和用于执行第二查询的第二查询执行计划,所述第一查询用于访问关系数据库系统(RDBS)的数据的第一数据集,所述第二查询用于访问所述数据的第二数据集,所述数据被划分成所述数据的数据集的数据块,其中所述RDBS的元数据包括关于所述数据块的相应数据块的所述数据集的至少一个特性的相应信息,所述计算机系统被配置用于:
当所述第一查询执行计划基于所述元数据和根据所述第一查询所述第一数据集必须满足的条件在所述RDBS上被执行时,确定所述数据块的第一分区正在被访问;
当所述第二查询执行计划基于所述元数据和根据所述第二查询所述第二数据集必须满足的另一条件在所述RDBS上被执行时,确定所述数据块的第二分区正在被访问;
检查是否存在所述第一分区和所述第二分区的数据块的公共分区;以及
基于检查,在所述RDBS上调度所述第一查询执行计划和所述第二查询执行计划。
19.根据权利要求18所述的计算机系统,其中所述第一分区的确定包括基于所述元数据和根据所述第一查询所述第一数据集必须满足的所述条件来丢弃所述数据块的第一互补分区,所述数据块的所述第一互补分区表示在所述第一查询执行计划在所述RDBS上被执行的情况下所述数据的数据块没有正在被访问,并且所述第二分区的所述确定包括使用所述元数据和根据所述第二查询所述第二数据集必须满足的所述条件来丢弃所述数据块的第二互补分区,所述数据块的所述第二互补分区表示在所述第二查询执行计划在所述RDBS上被执行的情况下所述数据的数据块没有正在被访问。
20.根据权利要求18所述的计算机系统,还被配置用于:
调度所述第一查询执行计划和所述第二查询执行计划,使得当所述第一分区和所述第二分区的数据块没有公共分区时,所述第一查询执行计划和所述第二查询执行计划在所述RDBS上并行地被执行。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/114,786 | 2020-12-08 | ||
US17/114,786 US20220179861A1 (en) | 2020-12-08 | 2020-12-08 | Scheduling query execution plans on a relational database |
PCT/IB2021/061407 WO2022123437A1 (en) | 2020-12-08 | 2021-12-07 | Scheduling query execution plans on a relational database |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116569163A true CN116569163A (zh) | 2023-08-08 |
Family
ID=81850509
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202180082548.3A Pending CN116569163A (zh) | 2020-12-08 | 2021-12-07 | 调度关系数据库上的查询执行计划 |
Country Status (6)
Country | Link |
---|---|
US (1) | US20220179861A1 (zh) |
JP (1) | JP2024500058A (zh) |
CN (1) | CN116569163A (zh) |
DE (1) | DE112021006377T5 (zh) |
GB (1) | GB2615505B (zh) |
WO (1) | WO2022123437A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116303575B (zh) * | 2023-03-22 | 2023-12-12 | 本原数据(北京)信息技术有限公司 | 数据库数据查询方法、装置及非易失性存储介质 |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6014655A (en) * | 1996-03-13 | 2000-01-11 | Hitachi, Ltd. | Method of retrieving database |
CA2306968C (en) * | 2000-04-28 | 2004-11-30 | Ibm Canada Limited-Ibm Canada Limitee | Efficient index-data fetch via callback for a table data |
US20070226176A1 (en) * | 2006-03-23 | 2007-09-27 | International Business Machines Corporation | Apparatus and method for optimizing a query to a partitioned database table using a virtual maintained temporary index that spans multiple database partitions |
US9147272B2 (en) * | 2006-09-08 | 2015-09-29 | Christopher Allen Ingrassia | Methods and systems for providing mapping, data management, and analysis |
US20080104008A1 (en) * | 2006-10-31 | 2008-05-01 | Brantley David L | Common data broker method, system, and program product |
US9251207B2 (en) * | 2007-11-29 | 2016-02-02 | Microsoft Technology Licensing, Llc | Partitioning and repartitioning for data parallel operations |
US20090235356A1 (en) * | 2008-03-14 | 2009-09-17 | Clear Blue Security, Llc | Multi virtual expert system and method for network management |
US8386508B2 (en) * | 2008-04-28 | 2013-02-26 | Infosys Technologies Limited | System and method for parallel query evaluation |
CN102262636B (zh) * | 2010-05-25 | 2012-10-10 | 中国移动通信集团浙江有限公司 | 生成数据库分区执行计划的方法及装置 |
US8918793B2 (en) * | 2011-12-07 | 2014-12-23 | Sap Se | Resolving resource contentions |
US9495411B2 (en) * | 2012-09-24 | 2016-11-15 | Salesforce.Com, Inc. | Increased parallelism performance of batch requests |
CN104216893B (zh) * | 2013-05-31 | 2018-01-16 | 中国电信股份有限公司 | 多租户共享数据表的分区管理方法、服务器与系统 |
US20160371329A1 (en) * | 2015-06-22 | 2016-12-22 | Sap Se | Prepared execution plans for joins with partitioned tables |
EP3443471B1 (en) * | 2016-06-30 | 2021-12-01 | Huawei Technologies Co., Ltd. | Systems and methods for managing databases |
US11468060B2 (en) * | 2018-06-25 | 2022-10-11 | Oracle International Corporation | Automatic query offloading to a standby database |
-
2020
- 2020-12-08 US US17/114,786 patent/US20220179861A1/en active Pending
-
2021
- 2021-12-07 JP JP2023534179A patent/JP2024500058A/ja active Pending
- 2021-12-07 DE DE112021006377.4T patent/DE112021006377T5/de active Pending
- 2021-12-07 GB GB2308020.3A patent/GB2615505B/en active Active
- 2021-12-07 WO PCT/IB2021/061407 patent/WO2022123437A1/en active Application Filing
- 2021-12-07 CN CN202180082548.3A patent/CN116569163A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
GB2615505B (en) | 2024-01-03 |
GB2615505A (en) | 2023-08-09 |
US20220179861A1 (en) | 2022-06-09 |
JP2024500058A (ja) | 2024-01-04 |
WO2022123437A1 (en) | 2022-06-16 |
GB202308020D0 (en) | 2023-07-12 |
DE112021006377T5 (de) | 2023-10-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Sethi et al. | Presto: SQL on everything | |
US20210374610A1 (en) | Efficient duplicate detection for machine learning data sets | |
CA2953817C (en) | Feature processing tradeoff management | |
US9529848B2 (en) | Predictive query result computation | |
US9672474B2 (en) | Concurrent binning of machine learning data | |
Aji et al. | Hadoop-GIS: A high performance spatial data warehousing system over MapReduce | |
US9128991B2 (en) | Techniques to perform in-database computational programming | |
GB2508503A (en) | Batch evaluation of remote method calls to an object oriented database | |
US20170139674A1 (en) | Systems and methods for tracking sensitive data in a big data environment | |
US10915537B2 (en) | System and a method for associating contextual structured data with unstructured documents on map-reduce | |
US11556537B2 (en) | Query plan generation and execution based on single value columns | |
CN116569163A (zh) | 调度关系数据库上的查询执行计划 | |
US10997175B2 (en) | Method for predicate evaluation in relational database systems | |
Chao-Qiang et al. | RDDShare: reusing results of spark RDD | |
US7814080B1 (en) | Grouping database queries and/or transactions | |
US20060085464A1 (en) | Method and system for providing referential integrity constraints | |
Quinto et al. | Introduction to spark and spark MLlib | |
US11874830B2 (en) | Efficient job writing for database member | |
Davidson et al. | Boolean Logical Operator Driven Selective Data Filtering For Large Datasets | |
Carruthers | The Query Optimizer | |
US10235394B2 (en) | Managing relational databases | |
US20200073985A1 (en) | Correlation of input and output parameters for a function in a database management system | |
Formica et al. | A new mechanism to use the Conditions Database REST API to serve the ATLAS detector description | |
Sachdev et al. | Khanan: Performance Comparison and Programming α-Miner Algorithm in Column-Oriented and Relational Database Query Languages | |
CN117435650A (zh) | 技术元数据处理方法、系统、设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |