CN111742309A - 自动数据库查询负载评估和自适应处理 - Google Patents
自动数据库查询负载评估和自适应处理 Download PDFInfo
- Publication number
- CN111742309A CN111742309A CN201980014605.7A CN201980014605A CN111742309A CN 111742309 A CN111742309 A CN 111742309A CN 201980014605 A CN201980014605 A CN 201980014605A CN 111742309 A CN111742309 A CN 111742309A
- Authority
- CN
- China
- Prior art keywords
- query
- fingerprint
- database
- queries
- executed
- 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
- 238000012545 processing Methods 0.000 title description 11
- 230000003044 adaptive effect Effects 0.000 title description 7
- 230000004044 response Effects 0.000 claims abstract description 49
- 238000000034 method Methods 0.000 claims abstract description 46
- 238000011156 evaluation Methods 0.000 claims description 57
- 230000015654 memory Effects 0.000 claims description 26
- 230000006854 communication Effects 0.000 description 14
- 238000004891 communication Methods 0.000 description 14
- 230000006870 function Effects 0.000 description 11
- 230000000694 effects Effects 0.000 description 8
- 230000009471 action Effects 0.000 description 5
- 230000004048 modification Effects 0.000 description 5
- 238000012986 modification Methods 0.000 description 5
- 230000008569 process Effects 0.000 description 5
- 230000008859 change Effects 0.000 description 3
- 230000003247 decreasing effect Effects 0.000 description 2
- 230000001419 dependent effect Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000008520 organization Effects 0.000 description 2
- 238000011867 re-evaluation Methods 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 230000003213 activating effect Effects 0.000 description 1
- 230000004913 activation Effects 0.000 description 1
- 230000002411 adverse Effects 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000007175 bidirectional communication Effects 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 238000012854 evaluation process Methods 0.000 description 1
- 230000008571 general function Effects 0.000 description 1
- 230000003116 impacting effect Effects 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 238000012552 review Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Images
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/2455—Query execution
-
- 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/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
- G06F16/285—Clustering or classification
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Operations Research (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
描述了与评估和自适应管理查询负载相关联的系统、方法和其它实施例。在一个实施例中,方法包括确定由客户端终端针对应用对象调用的查询具有超过完成阈值的持续时间。响应于接收到对查询的后续调用,获得查询的统计信息。分析获得的统计信息以确定查询是否对应用对象造成了不可接受的负面影响。修改数据结构以基于分析的结果将查询的分类包括到多个不同的查询类之一中,并且基于修改后的数据结构中的查询的分类来控制响应于未来调用的查询的执行。
Description
背景技术
例如,诸如Oracle服务云(Oracle Service Cloud)之类的基于云的应用包括允许远程客户端终端的用户指定针对应用对象要执行的自定义查询的应用编程接口(API)。诸如RightNow对象查询语言(RightNow Object Query Language,“ROQL”)之类的查询工具使远程客户端终端能够发起查询、对用户可以创建的查询进行很少的前期检查或限制。由于缺少对用户定义的查询的前期约束,因此可能定义和调用效率低下或界定不足的有问题的查询。执行此类有问题的查询消耗大量的网络和数据库管理资源(CPU时间、数据库连接、网络带宽、网络通信、存储器等)。执行有问题的查询所消耗的大量资源对发起查询的客户端终端以及在公司实体处访问云环境中的应用对象的其它客户端终端的应用对象的性能产生负面影响。该负面影响甚至可能影响共享云应用环境中受影响的资源的不同实体处的客户端终端。
试图限制有问题的查询的执行涉及建立用于可接受的查询的最大允许运行时。具有超过最大允许运行时的运行时的所有查询将被终止。这种方法确实限制了执行有问题的查询的效果。但是,性能影响仍然可以经历一段时间,直到有问题的查询的运行时达到最大允许运行时为止。重复执行相同的有问题的查询使应用对象遭受与应用对象第一次调用有问题的查询时所经历的相同的负面影响。另外,因为有问题的查询在完成之前就终止了,所以虽然对应用对象的性能造成了负面影响,但是调用查询的客户端终端未接收到查询的结果。
发明内容
在一个实施例中,一种非暂态计算机可读介质存储计算机可执行指令,该计算机可执行指令在由计算系统的至少处理器执行时使得计算系统执行以下操作:由至少该处理器确定由数据库管理系统执行的查询具有超过完成阈值的执行持续时间;由至少该处理器将与查询对应的指纹存储在数据结构中;由至少该处理器响应于查询的执行持续时间超过完成阈值而标记指纹以供评价(evaluation);响应于接收到与指纹对应的后续查询请求,并基于指纹被标记,分析指纹的统计信息,以确定后续查询请求的执行是否将对数据库管理系统造成不可接受的负面影响;由至少该处理器基于分析的结果来修改数据结构,以将指纹分类为多个不同的查询类之一;以及由至少该处理器基于指纹的分类来控制未来的查询请求的执行。
根据另一个实施例,计算机可执行指令还包括在由至少该处理器执行时使得计算系统执行以下操作的指令:通过将指纹指派给(i)允许的查询类,或(ii)被阻塞的查询类,基于分析的结果对指纹进行分类。如果指纹被指派给允许的查询类,那么将在不重复分析统计信息的情况下执行未来的查询直至完成,并且如果指纹被指派给被阻塞的查询类,那么将阻止执行未来的查询。
根据另一个实施例,统计信息包括查询解释数据或数据库服务器处理程序统计信息。
根据另一个实施例,要分析的统计信息不包括要求利用非活动数据库资源来获得的数据库性能统计信息。
根据另一个实施例,多个不同的查询类包括用于与要针对第一数据库执行的查询对应的指纹的允许的查询类。
根据另一个实施例,多个不同的查询类还包括用于与要针对不同于第一数据库的第二数据库执行的查询对应的指纹的重定向的查询类。
根据另一个实施例,计算机可执行指令还包括在由至少该处理器执行时使得计算系统执行以下操作的指令:使得针对第一数据库执行查询;以及基于指纹被分类在重定向的查询类中,使得针对第二数据库执行未来的查询。
根据另一个实施例,计算机可执行指令还包括在由至少该处理器执行时使得计算系统执行以下操作的指令:响应于导致指纹被标记以供评价的查询的执行而阻止分析统计信息以对指纹进行分类。
根据另一个实施例,一种计算系统包括:连接到存储器的处理器;以及存储在非暂态计算机可读介质上并且被配置有指令的校正模块,该指令在由处理器执行时使得处理器执行以下操作:从多个远程设备接收应用活动数据;分析应用活动数据以确定与多个远程设备中的每个远程设备相关联的应用活动集合;分析应用活动集合以确定与多个远程设备中的远程设备集合相关联的一个或多个挑战;确定针对一个或多个挑战中的每个挑战的校正动作;以及基于校正动作为该远程设备集合生成校正动作数据结构。
根据另一个实施例,一种计算系统包括:连接到至少一个存储器的至少一个处理器;以及存储在非暂态计算机可读介质上并包括指令的分析模块,该指令在由至少一个处理器执行时使得计算系统:由至少该处理器确定由数据库管理系统执行的查询具有超过完成阈值的执行持续时间;由至少该处理器将与查询对应的指纹存储在数据结构中;由至少该处理器响应于查询的执行持续时间超过完成阈值而标记指纹以供评价;响应于接收到与指纹对应的后续查询请求,并基于指纹被标记,分析指纹的统计信息,以确定后续查询请求的执行是否将对数据库管理系统造成不可接受的负面影响;由至少该处理器基于分析的结果来修改数据结构,以将指纹分类为多个不同的查询类之一;以及由至少该处理器基于指纹的分类来控制未来的查询请求的执行。
根据另一个实施例,分析模块还包括在由所述至少一个处理器执行时使得计算系统执行以下操作的指令:通过将指纹指派给(i)允许的查询类,或(ii)被阻塞的查询类,基于分析的结果对指纹进行分类。如果指纹被指派给允许的查询类,那么将在不重复分析统计信息的情况下执行未来的查询直至完成,并且如果指纹被指派给被阻塞的查询类,那么将阻止执行未来的查询。
根据另一个实施例,统计信息包括查询解释数据或数据库服务器处理程序统计信息。
根据另一个实施例,要分析的统计信息不包括要求利用非活动数据库资源来获得的数据库性能统计信息。
根据另一个实施例,多个不同的查询类包括用于与要针对第一数据库执行的查询对应的指纹的允许的查询类。
根据另一个实施例,多个不同的查询类还包括用于与要针对不同于第一数据库的第二数据库执行的查询对应的指纹的重定向的查询类。
根据另一个实施例,分析模块还包括在由该至少一个处理器执行时使得计算系统执行以下操作的指令:使得针对第一数据库执行查询;以及基于指纹被分类在重定向的查询类中,使得针对第二数据库执行未来的查询。
根据另一个实施例,分析模块还包括在由该至少一个处理器执行时使得计算系统执行以下操作的指令:响应于导致指纹被标记以供评价的查询的执行而阻止统计信息的分析以对指纹进行分类。
根据另一个实施例,一种计算机实现的方法包括:确定由数据库管理系统执行的查询具有超过完成阈值的执行持续时间;将与查询对应的指纹存储在数据结构中;响应于查询的执行持续时间超过完成阈值而标记指纹以供评价;响应于接收到与指纹对应的后续查询请求,并基于指纹被标记,分析指纹的统计信息,以确定后续查询请求的执行是否将对数据库管理系统造成不可接受的负面影响;基于分析的结果来修改数据结构,以将指纹分类为多个不同的查询类之一;以及基于指纹的分类来控制未来的查询请求的执行。
根据另一个实施例,通过将指纹指派给(i)允许的查询类,或(ii)被阻塞的查询类,基于分析的结果对指纹进行分类。如果指纹被指派给允许的查询类,那么将在不重复分析统计信息的情况下执行未来的查询直至完成,并且如果指纹被指派给被阻塞的查询类,那么将阻止执行未来的查询。
根据另一个实施例,允许的查询类中的指纹与要针对第一数据库执行的查询对应,并且不同的查询类还包括重定向的查询类,该重定向的查询类用于与被指定用于针对不同于第一数据库的第二数据库来执行的查询对应的指纹。
根据另一个实施例,控制未来的查询的执行包括:使得针对第一数据库执行与指纹对应的查询直至完成;以及基于指纹被分类在重定向的查询类中,使得针对第二数据库执行与指纹对应的未来的查询。
上面的概述给出了简化的概述,以便提供对本文讨论的系统和/或方法的一些方面的基本理解。该概述不是本文讨论的系统和/或方法的扩展概览。它并非旨在识别关键/重要元素或描绘此类系统和/或方法的范围。其唯一目的是以简化的形式给出一些概念作为稍后给出的更详细描述的序言。
附图说明
结合在本说明书中并构成其一部分的附图示出了本公开的各种系统、方法和其它实施例。将认识到的是,图中所图示的元件边界(例如,方框、方框的组,或者其它形状)表示边界的一个实施例。在一些实施例中,一个元件可以被实现为多个元件,或者多个元件可以被实现为一个元件。在一些实施例中,被示为另一个元件的内部部件的元件可以被实现为外部部件,并且反之亦然。此外,元件可能不是按比例绘制的。
图1图示了基于云的数据库系统的实施例,该基于云的数据库系统自动评估并自适应地处理数据库查询负载以高效地利用计算和网络资源。
图2A-2F图示了以图形方式描绘与评估和自适应处理查询负载相关联的方法的实施例的流程图。
图3图示了被配置有所公开的系统和/或方法的实施例的计算系统的一个实施例。
具体实施方式
本文描述了提供对数据库查询负载的自动评估和对查询的自适应处理以维持基于云的应用对象的性能的系统和方法。例如,基于云的应用(诸如Oracle服务云)包括应用编程接口(“API”),该API允许远程客户端终端的用户指定要针对应用对象执行的自定义查询。查询工具(诸如RightNow对象查询语言(“ROQL”))使远程客户端终端能够发起查询、对用户可以创建的查询进行很少的前期检查或限制。因此,不可避免的是,一些有问题的查询的执行将对数据库产生大的负载,这严重影响应用对象的性能。
阻塞(block)有问题的查询的先前尝试涉及将这样的查询添加到定义有问题的查询的所谓“黑名单”的数据结构,其构成将被阻止执行的一类查询。对被列入黑名单的查询的调用处理仅由于它们花费太长时间才能完成而被阻止执行。但是,将查询添加到黑名单的唯一原因是有问题的查询需要很长时间才能完成太严格了,并且导致无法接受的“假阳性(false positive)”的数量。假阳性是指虽然超过了阈值运行时但仍不是完成查询所需的延长运行时的根本原因的查询。毕竟,存在与查询无关的许多因素(例如,网络流量、并发数据库连接的数量等)可能导致查询的运行时超过阈值运行时。
减少添加到黑名单中的假阳性的数量的另一种先前尝试,已经创建了由所谓“白名单”定义的另一类允许的查询。白名单包括允许的查询的集合,当由远程客户端终端调用时,将执行完成这些查询。为了被添加到白名单,将对查询进行分析,以确定查询本身的某个方面是否对应用对象的性能造成不可接受的负面影响。但是,分析每个查询不必要地消耗了数据库和网络计算资源,并且可能导致对要减轻的性能的非常负面的影响。例如,将分析仅被调用一次的一次性查询,以确定是将一次性查询添加到黑名单还是白名单。计算资源和网络资源被消耗以执行评价,从而对应用对象的性能产生负面影响。但是,执行分析的好处将永远无法抵消未来的负面影响,因为永远不会再次调用一次性查询。
此外,以常规方式使用严格的黑名单和白名单结构可能无法充分适应数据库改变或与查询本身的参数无关的其它改变。此类改变可能更改查询对应用对象性能的负面影响,即使查询先前已被分析并列入白名单。例如,当数据库中的数据随时间演化(例如,尺寸急剧增加)或数据库的模式改变时,对列入白名单的查询的后续调用可能对应用对象造成不可接受的负面影响。处理对查询的此类未来调用的自适应方法应当认识到在已经对查询进行分析和分类之后发生的此类改变的影响。响应于识别出这样的改变,系统和方法的自适应性质可以自动更新受影响的查询的分类,以解决可能由于对查询的未来调用而引起的负面影响。
本公开涉及用于分析数据库查询并控制系统怀疑其将对系统造成大负载的查询的执行的系统和方法。在一个实施例中,响应于第二次或以后执行具有已被评价并被认为对系统造成负面影响的指纹的查询,对可疑的识别出查询进行分类。基于分类(例如,黑名单分类)来控制查询的未来执行。本系统和方法使用刚刚超出完成查询所经过的时间的度量来确定该查询是否应当被列入黑名单或以其它方式分类。根据一个实施例,本系统和方法使用第一次调用查询时执行查询所需要的时间来确定是否应当响应于对具有匹配的指纹的查询的后续调用来分析具有与查询相关联的指纹的查询。这种分析评估执行具有指纹的查询的负载和对具有多个并发用户并且可通过通信网络访问的应用对象的性能的影响。如果首次调用的查询(或其它早期实例,诸如第二次、第三次、第四次调用等)的持续时间超出了完成阈值时间,那么该查询的指纹将指定为在数据结构(例如,未决(pending)分析的查询的表)中进行评价。可以在数据结构中将查询指纹标记或以其它方式指定为未决评价,以确定与该查询指纹对应的查询是否被允许执行,或者应当响应于对查询的未来调用而被阻塞。
为了减轻因分析一次性查询的指纹而对应用对象造成的负面影响,即使查询超过完成阈值时间,也将执行响应于初始调用而执行的查询,直至完成。可以实现完全完成的查询的结果,并且完成通知可以选择性地通过通信网络(诸如互联网,专用网络或其它合适的通信网络)被返回给客户端。但是,并未响应于第一次调用查询就执行查询指纹分析以确定查询对应用对象或系统性能的影响,从而导致查询的指纹被指定以供评价。
响应于接收到第二次或后续查询,该第二次或后续查询包括已被标记或以其它方式指定为要求评价的指纹,分析模块使用可用信息来评估与该指纹对应的查询负载。例如,可用信息可以包括任何低开销信息,诸如查询解释数据和数据库管理服务器处理程序统计信息(在本文被称为“处理程序统计信息(handler statistics)”)。此类可用信息是通过数据库的标准管理生成的,目的是将数据读取和/或写入数据库。可以利用查询解释和处理程序统计信息,因为此类数据易于被分析模块使用,而无需激活专门用于收集数据的目的的数据库资源(例如,网络通信、测量数据库性能统计信息所需的内部工具等)。专门激活这种数据库资源以测量数据库性能本身会给本系统带来额外的负担,并且希望减轻这种负担。因此,可以可选地将由于数据库的标准操作而不可用于执行查询的单独测量的数据库性能统计信息排除在考虑范围之外。
对于针对操作数据库中的特定固定数据集的查询,与查询的经过时间相比,查询解释数据和用于查询的处理程序统计信息一般是恒定的。对于同一查询的不同调用,查询的经过时间可以有所不同,取决于与查询本身无关的因素,诸如执行查询时数据库的加载。因此,查询解释数据和处理程序统计信息是分析查询指纹以确定由查询利用查询指纹本身施加的真实资源负载时的适当考虑因素,因此,此类查询将对应用对象产生影响。虽然本系统和方法使用与阈值相比的查询执行的经过时间作为评价可能应当列入黑名单的查询指纹的触发器,但这些经过时间并不是决定是否将查询指纹真正列入黑名单的唯一决定因素。代替地,解释数据和处理程序统计信息将用于进行分析,该分析对于没有改变数据库或数据库中数据的情况下的指纹保持一致。无论查询是针对操作数据库还是针对报告数据库执行,分析结果都将相同。
根据另一个实施例,指示查询所施加的负载或查询的影响的其它信息可以被认为是分析的一部分。例如,MySQL性能信息可以是查询分析期间要考虑的因素。“show profile(示出简档)”或Performance_schema(性能_模式)包括有用的信息。但是,由于这些工具通过激活尚未被激活的内部工具来执行查询而引入开销,但只是为了搜集数据,因此可以可选地从分析中排除此类数据。
例如,对诸如查询解释和处理程序统计信息之类的可用信息的考虑还允许本系统和方法适应数据库中的改变。例如,对数据量、表统计信息、索引等的改变将反映在此类可用信息中。本系统和方法可以基于查询的执行趋势来检测这样的改变,并且在数据结构中指定被改变的数据所影响的查询指纹以进行重新评价。进一步地,还可以标记或以其它方式指定在发生既定数量的调用之后未更新的陈旧查询,以供在数据结构中重新评价。可以基于改变的数据再次执行本文所述的查询指纹的分析,以重新评价查询对应用对象的负载和潜在的负面影响。
基于查询指纹的评价结果,分析模块修改数据结构以包括将查询指纹分类为多个不同查询类之一。例如,不同的查询类可以至少包括:(i)允许的查询类(例如,白名单),其包括被指定为随后被调用时执行的查询,以及(ii)被阻塞的查询类(例如,黑名单),其包括随后被调用时被阻止执行的查询。
响应于随后接收到相同或相似的查询以供执行,系统至少部分地使用查询指纹的分类来控制具有这种指纹的查询的执行。可以针对操作数据库执行将查询指纹分类为允许的查询类的后续查询。响应于此类查询的未来调用,可以阻止具有被分类为被阻塞的查询类的查询指纹的查询的执行。例如,当提交相同或相似的查询(包括相同指纹的查询)以供执行并且被检测为处于被阻塞的类中时,系统阻止该查询的执行。因此,系统避免消耗由于执行被阻塞的查询要使用的大量计算资源。
根据替代实施例,查询指纹可以被分类为第三类,在本文中被称为重定向的查询类。具有在重定向的查询类中的查询指纹的查询对应用对象具有负面影响,但没有像具有在被阻塞的查询类中的查询指纹的查询所引起的负面影响那样严重的负面影响。具有重定向的查询类中的指纹的查询将针对第二数据库执行,该第二数据库诸如例如不同于操作数据库并且与操作数据库分离的报告数据库。因此,可以通过阻塞对应用对象产生深远负面影响的查询来维护操作数据库的性能。虽然具有中等程度的负面影响,但仍可以针对报告数据库执行具有在重定向的查询类中的查询指纹的查询。
参考图1,示出了基于云的数据库系统100的一个实施例,其与自动评估和自适应处理数据库查询负载以高效地利用计算和网络资源相关联。数据库系统100可操作地连接以通过通信网络120与多个客户端终端105、110、115通信。客户端终端105、110、115可以接收用于查询的用户定义的参数,并且针对数据库125远程调用该查询。查询的调用是指数据库系统100接收由客户端终端105、110、115中的一个或多个传输的执行查询的请求。数据库125可由数据库系统100托管或与数据库系统100相关联的基于云的应用对象访问。
根据一个实施例,例如,客户端终端105、110、115或数据库系统100可以是计算设备300,如参考图3所示和描述的。例如,数据库系统100包括查询执行引擎130。可操作查询执行引擎130以接收用户定义的查询参数,并且例如基于接收到的参数为要针对诸如操作数据库125之类的数据库执行的查询生成解释计划。解释计划包括用于访问数据库中数据的执行步骤的有序集合。每个执行步骤都具有关于选择类型(例如,SIMPLE、PRIMARY、UNION等)、联接类型(例如,CONST、REF、RANGE等)、表名称以及可选地查询的其它方面的信息。执行引擎130确定查询的执行计划,并在被指示这样做时(诸如响应于“解释”语句的调用)在解释计划中定义执行计划。
解释计划中包括的信息可以被包括在查询的通用定义中,在本文中被称为“指纹”或“查询指纹”。查询的指纹由原始查询的“归一化”或“通用”签名组成。例如,从签名中排除特定于被调用的查询的值、将查询令牌转换成小写字母、在签名中应用标准名称别名等。结果是对查询的功能方面的一般描述,以通用或标准化术语表示。签名的通用描述并非特定于被调用的查询,并且可以表示不同查询的结构。例如,以下查询:
SELECT i.id FROM incidents i WHERE due_date>"11-MAY-2018"AND queue_id=3
可以变成查询签名:
select t1.id from incidents t1 where t1.due_date>?date and t1.queue_id=?number
并且指纹可以是查询签名的固定尺寸的散列(例如,6f9d069c301dce23bae834f08795a110766de334)。在推导出查询指纹之后,可以获得解释计划。因此,至少基于在该查询的执行期间要执行的通用功能,查询的指纹可以被认为是查询的唯一标识符。
在一个实施例中,特定于查询的信息和参数,诸如数据库中的特定位置,在该特定位置处,可以例如从指纹中忽略在对查询的特定调用期间要访问的数据。因此,指纹可以指示第一查询的功能方面,并且可以通过每个查询的特定于查询的参数与和第一查询不同的一个或多个其它查询共同发现这些功能方面。换句话说,两个查询可以具有相同的指纹,但不是完全相同的查询。
本文中对查询的评价的参考涵盖查询或查询指纹的评价。与查询相关联的信息(诸如执行计划、解释计划中包括的语句、以及用于表征查询指纹的其它此类信息)在本文中被称为“查询解释数据”。用于数据库125的查询解释数据可以由提供给数据库系统100的操作解释模块135存储在存储器中或从存储器中检索。在一个实施例中,两个查询可以具有相同的匹配指纹,但不是完全相同的查询。例如,都具有指纹XYZ的查询A和B可以具有不同的解释计划,但是由最近(或其它先前)评价得出的解释计划与查询相关联。
类似地,具有如果被执行将对应用对象的性能产生负面影响的指纹的查询可以被重定向到报告数据库140或以其它方式针对报告数据库140执行,如本文所述。报告数据库140可以被配置为存储还被存储在操作数据库125中的数据。但是,报告数据库140可以由不同于操作数据库125的数据库系统100使用。例如,客户端终端105、110、115可以经由数据库系统100重复访问操作数据库125,以从操作数据库125读取数据和向操作数据库125写入数据。双向通信一般由双向箭头145表示。如箭头150所指示的,可以将由操作数据库125维护的数据中的至少一些冗余地存储在报告数据库140中。可以将对报告数据库140的访问限制为读取操作,如单向箭头155所指示的。根据另一个实施例,报告数据库140可以执行与相对于操作数据库125的角色受限的应用对象相关联的角色。用于报告数据库140的查询解释数据可以由提供给数据库系统100的报告解释模块160存储在存储器中或从存储器中检索。
来自操作解释模块135的查询解释数据和来自报告解释模块160的查询解释数据可以存储在数据结构中作为查询解释数据165。查询解释数据165链接到与该查询解释数据165对应的相应查询,并且可由分析模块170访问以用于通过具有与查询解释数据165对应的指纹的查询来评价对应用对象的影响。查询解释数据165的示例包括但不限于:将解析为单行的键的类型、所调用的查询的类型以及所调用的查询的标识符。
分析模块170还可以访问存储在存储器中的处理程序统计信息175,以用于由查询执行引擎130执行的查询。处理程序统计信息175可以包括与数据库125中的某些数据多久或多频繁被访问、读取、添加等相关的任何数据。处理程序统计信息的示例包括但不限于:(i)读取索引中的第一个条目的次数、(ii)基于键读取表中的行的请求的数量、(iii)读取索引中最后一个键的请求的数量、(iv)按照键次序读取下一行的请求的数量、(v)按照键次序读取前一行的请求的数量、(vi)基于固定位置读取行的请求的数量、(vii)读取数据文件中的下一行的请求的数量、以及(viii)在表中插入行的请求的数量。
分析模块170被配置为生成数据结构180,该数据结构180识别查询,并且如果查询的持续时间在完全执行之后超过完成阈值时间,那么将该查询标记或以其它方式指定为需要评价。例如,数据结构可以包括记录的表,其中记录识别与当前被指定为需要评价(被标记以供评价)或者先前被评价并且自那以来已被分类为多个不同查询类之一的查询对应的指纹。可以可选地在数据结构中将用于每个查询的指纹指定为需要评价,以响应这些查询的首次调用。进行评价以确定查询本身是否是对应用对象产生不可接受的负面影响的实质原因。可以推迟这种评价,直到随后调用利用指纹的查询为止。通过推迟评价,不会响应于首次调用查询(在指定指纹以供评价时)执行评价。因此,如果查询是一次性查询,那么不会消耗系统和网络资源来不必要地评价与不会被再次调用的查询对应的指纹。因此,在评价指纹之前,系统需要接收具有指纹的至少两个查询。
图1所示的数据库系统100的实施例可以是计算/数据处理系统,包括用于企业组织的应用或分布式应用对象的集合。应用对象和数据库系统100可以被配置为与基于云的联网系统、软件即服务(“SaaS”)体系架构或其它类型的联网计算解决方案一起操作,或者被实现为基于云的联网系统、软件即服务(“SaaS”)体系架构或其它类型的联网计算解决方案。在一个实施例中,数据库系统100将内容提供给客户端终端105、110、115中的一个或多个,从而允许接收方客户端终端105、110、115至少执行本文公开的关于接收查询参数和针对数据库125调用查询的功能。许多客户端终端105、110、115可以并发地访问数据库系统100,作为通过通信网络120与数据库系统100(例如,用作服务器)进行通信的单独的、位于远程的计算设备/终端。
在一个实施例中,本文描述的数据库系统100的部件或方面中的一个或多个可以被配置为存储在非暂态计算机可读介质中的程序模块。该程序模块被配置有存储的指令,该指令在由至少一个处理器执行时使得数据库系统100的一个或多个计算设备执行如本文所述的(一个或多个)对应功能。
图2A-2F图示了与数据库系统100相关联的方法200的一个实施例,该方法200自动评估查询负载并自适应地处理这些查询负载以维持应用对象的期望性能。本方法涉及基于查询解释数据165和处理程序统计信息175来评价查询的指纹,以评估在执行查询时施加于数据库系统100或应用对象上的查询负载。这种负载的评价在下文中被称为评价或确定“查询成本”。“昂贵”或“高成本”查询的指纹在数据库系统100上施加了很大的负担,其消耗了不期望的计算资源量(例如,基于阈值)。因此,当查询使用超出设置阈值量的资源量时,高成本的查询被认为会对应用对象的性能和/或系统造成不可接受的负面影响。计算资源可以包括但不限于CPU时间、数据库连接、网络带宽、网络通信、存储器和/或用于处理查询的其它资源。在一个实施例中,响应于检测到对相同或相似查询的未来调用而阻止执行的高成本查询,以减轻客户端105、110、115所经历的不良应用对象性能。相反,一般认为具有“小成本”的“低成本”或“廉价”查询的指纹是允许的,并且响应于检测到对相同或相似的低成本查询的未来调用而执行指纹。
在图2A中,在模块202处,由分析模块170接收被提交以供客户端终端105执行的查询请求。在一个实施例中,在执行查询之前,分析模块170拦截查询请求,以允许系统确定是否要如先前所解释的那样控制查询的执行。查询请求通过通信网络120被接收,并且包括一个或多个语句,该一个或多个语句定义要在查询的执行期间执行的一个或多个操作。被接收作为查询请求的一部分的语句定义了查询的指纹,分析模块170使用该指纹来唯一地识别要作为查询的一部分被执行的操作的组合。在方框204处,将接收到的查询的指纹与数据结构180中包括用于先前接收到的查询的指纹信息的条目进行比较,以确定是否先前已经接收到具有相同指纹的另一个查询请求。
如果不存在用于接收到的查询请求的指纹的现有记录,那么在方框206处执行查询直至完成并获得返回的错误代码。错误代码包括指示查询的执行是否超过完成阈值时间的信息。例如,返回的错误代码可以是“OK(没问题)”,这指示查询的完全执行所花费的时间少于完成阈值时间。错误代码可以是“DIVERT(偏转)”或“TOO LONG(太长)”,其中每个错误代码指示查询的持续时间超过了完成阈值时间。错误代码“TOO LONG”可以指示查询执行的持续时间很长,以至于应当阻止针对操作数据库125或报告数据库140执行对该查询的未来调用。错误代码“DIVERT”可以指示查询执行的持续时间超过了完成阈值时间,因此是高成本的,但是仍然可以针对报告数据库140而不是针对操作数据库125来执行查询。
在方框208处,基于返回的错误代码,分析模块170确定查询是否超过了完成阈值时间。如果不是,那么在方框210处,分析模块170可以可选地生成数据结构180(图1),其包括关于查询的信息,诸如例如查询指纹,以及将查询指定为这个时候不需要评价。代替地,将查询指纹分类为“允许的”查询类,其包括被分配给白名单的查询。被列入白名单的查询不会对应用对象产生显著的负面影响,并且响应于未来调用而被视为可针对操作数据库125执行。另外,被列入白名单的查询的负面影响是,不要求响应于第二次或以后调用具有相同指纹的查询而基于解释数据和处理程序统计信息对查询进行进一步评价来对这些查询进行分类。
为了进一步改善系统性能,可以可选地省略在方框210处的用于将查询指纹添加到白名单的数据结构180的生成(或数据结构的其它修改)。为了维护被列入白名单的查询的库,将产生大量的存储成本。代替维护被列入白名单的查询的库,当调用这样的查询时,可以简单地针对操作数据库125执行与如本文所述未被列入黑名单或以其它方式分类的指纹相关联的查询。
如果在方框208处分析模块170确定查询的执行超出了完成时间阈值,那么在方框212处,分析模块170生成数据结构180。生成数据结构180来包括关于查询的信息,并且设置查询指纹的对应标志位或其它类型的状态指定以指示查询指纹被标记用于评价。由于这是查询被标记的第一次,因此将针对操作数据库125完全执行查询。
但是,在数据结构180中被标记并指定用于评价之后,如果随后将该查询再次提交以供执行,那么将评价相同或相似的查询。例如,响应于未来第二次或更晚调用具有相同指纹的查询,将基于解释数据和处理程序统计信息来分析查询指纹。这种附加分析将确定是否将查询指纹分类为“被阻塞的”查询类。被阻塞的查询类包括已列入黑名单的查询的指纹。当随后由客户端终端105、110、115提交或调用相同或相似的查询以供执行时,分析模块170的这种分类将控制查询执行引擎130的操作,以阻止针对操作数据库125和/或报告数据库140执行具有被列入黑名单的查询指纹的查询。
如果在图2B中的方框214处分析模块170确定与接收到的查询请求对应的查询指纹被包括在现有数据结构中,并且已被指定为“未决评价”。被指定为“未决评价”是指该查询先前已被标记为响应于随后未来接收到具有该指纹的另一个查询请求以供评价。查询执行引擎130准备在方框216处获得处理程序统计信息以评价查询。由查询执行引擎130收集的处理程序统计信息包括会话值和全局值两者。为了获得用于执行这一个特定查询的处理程序统计信息,查询执行引擎130例如可以确定在查询之前与之后要收集的统计值之间的差。
根据另一个实施例,例如,在执行查询之前,可以使用诸如“FLUSH STATUS(刷新状态)”之类的适当命令将会话计数器重置为零。在执行查询之后收集的处理程序统计信息值仅包含归因于执行这个特定查询的那些统计信息值。无论使用哪种方法获取处理程序统计信息,都不应当考虑使用查询高速缓存来获取准确的处理程序统计信息。如果查询高速缓存包括完全相同的查询,那么查询执行引擎将返回高速缓存的结果而不是用于执行当前特定查询的结果。因此,会话查询高速缓存应当暂时关闭以获得用于当前搜索的当前处理程序统计信息。
在进行了适当的准备之后,查询执行引擎130在方框218处发起接收到的查询的执行,并获得返回的错误代码。如上面所提到的,返回的错误代码指示完成执行查询执行所花费的时间。错误代码可以指示查询的执行未超过完成阈值时间(例如,“OK”)、显著超过完成阈值时间(例如,“TOO LONG”)或超过了完成阈值时间但是仅超过被定义为可容忍的有限余量(例如,“DIVERT”)。
在方框220处,分析模块170检索、接收或以其它方式访问由查询执行引擎130在方框220处获得的针对当前查询的处理程序统计信息175。类似地,在方块222处,分析模块170访问查询解释数据165。可以将被访问的处理程序统计信息175和查询解释数据165临时存储在耦合到分析模块170的存储器中以进行当前评价,并且在每次要求更新评价时进行更新。
在方框224处由分析模块170执行评价是基于返回的错误代码、处理程序统计信息175和当前调用的查询的解释数据165的。对查询或查询指纹的评价将查询或指纹分类为属于多个不同类之一。例如,查询可以被分类为以下四类之一:
简单查询
分析模块170在方框226处确定查询指纹是否与简单查询对应。简单查询不是主要基于成本来定义的,而是仅使用将以最小成本解析为单行的常量或唯一键。因而,可以基于查询解释数据165来执行针对简单查询的测试,而与处理程序统计信息175无关。为了测试“简单”查询,可以检查查询解释数据的行或其它部分。简单查询的一个实施例要求:
(1)第一选择ID的第一行必须具有“system”或“const”的join_type并且rows=1;
(2)第一选择ID的后续行必须具有join_type“eq_ref”
(3)对于第一选择ID之后的每个选择ID:
(a)如果select_type不是“UNION”,那么选择ID的所有行必须具有join_type“eq_ref;”
(b)否则,如果select_type是“UNION”,那么:
(i)选择ID的第一行必须是“system”或“const”并且rows=1
(ii)选择ID的后续行必须具有join_type“eq_ref”。
作为特定示例,具有指纹以“通过ID来选择对象”的查询是简单查询。在方框228处,将在方框226处识别出的用于简单查询的指纹分类为允许的查询类(例如,添加到白名单),这意味着查询执行引擎130将响应于未来调用而利用该指纹来执行查询。在方框228处,还修改用于这个允许的查询的数据结构180,以去除指示这个查询需要评价的标志或其它指定。因此,对允许的查询指纹的未来调用将使查询执行引擎130执行对应的查询,而不执行为了将查询指纹分类为允许的而执行的评价。
可接受的查询
如果在方框226处确定查询不是简单的,那么在方框230处基于查询的成本进行评价以确定该查询是否至少是可接受的。这样的成本可以作为根据本实施例的加权处理程序统计值的总和而获得。用于查询的查询解释数据可以被用于改变指派给各个处理程序统计信息175的权重。但是,根据另一个实施例,可以将静态权重指派给每个不同的处理程序统计值。例如,可以将权重指派给处理程序统计值,以指示与每个处理程序统计信息相关联的成本。可以为处理程序统计信息(诸如读取索引中第一个条目的次数(“handler_read_first”))指派权重二(2)。可以为顺序操作的统计信息(诸如按照键次序读取下一行的请求的数量(“handler_read_next”))指派权重一(1)。与handler_read_next统计信息相比,handler_read_first统计信息具有相对高成本的权重,因为handler_read_first操作比handler_read_next统计信息更频繁地要求数据块读取以加载行信息。权重为一(1)的项(诸如handler_read_next)按顺序次序被访问,并且仅要求对行值进行递增。相反,handler_read_first可以涉及用相关数据定位行来代替定位表中的下一行,并且在计算上成本更高。
可接受的查询是不简单但具有不超过可接受的阈值成本的成本的查询(例如,具有比简单查询更高的成本)。基于加权处理程序统计信息,可接受的阈值成本大致与在数据库的负载相对低的时段期间针对该数据库可以在不到X秒的时间内完全执行的查询对应。例如,X可以是大于零(0)且小于三十(30)的任何整数(例如,1秒、5秒、10秒等)。虽然在本文出于说明目的使用X的特定示例,但是可以在不脱离本公开的范围的情况下将其它值指派给X。
如果在方框230处基于评价认为查询是可接受的,那么该查询的分类还取决于作为该查询的执行结果而返回的错误代码。在方框232处,分析模块170确定返回的错误代码是“OK”还是“DIVERT”。如果是这样,那么在方框234处将查询指纹分类为允许的(例如,列入白名单),并且修改数据结构180以反映这个分类并去除查询需要评价的标志或其它指定。因此,查询执行引擎130可以执行利用查询指纹的未来查询调用,而无需重复评价。
如果分析模块170在方框232处确定针对查询的当前调用返回的错误代码是任何其它代码(诸如“TOO LONG”),那么在方框236处修改数据结构180(图2C)以反映重定向的查询类中查询指纹的分类。可以执行对查询的未来调用,但是应当由查询执行引擎130针对报告数据库140而不是针对操作数据库125进行重定向。
边际(marginal)查询
如果在方框230处(图2B)确定查询是不可接受的,那么在方框238处(图2D)进行评价以确定查询是否是边际的。为将查询识别为边际的而进行的成本评价类似于为识别可接受的查询而描述的成本评价。但是,边际查询的成本高于可接受的查询的成本。回想一下,可接受的阈值成本大致与在数据库的负载相对低的时段期间针对该数据库可以在不到X秒的时间内完全执行的查询对应。可接受的查询的X值被定义为小于三十(30)的任何正整数。但是,为了成为边际查询,在可比较的数据库加载条件下,X的值可以至少为三十(30)秒,但少于六十(60)秒。虽然在本文出于说明目的使用X的特定示例,但是可以在不脱离本公开的范围的情况下将其它值指派给X。
如果基于方框238处的评价认为查询至少并非是边际的,那么在方框240处将查询指纹分类为被阻塞的查询类(例如,列入黑名单)。由分析模块170进行的这种分类将使查询执行引擎130阻止响应于对查询的未来调用而针对操作数据库125或报告数据库140执行查询。被阻塞的查询被认为在计算上过于昂贵以至于无法执行,并且如果执行,将对应用对象的性能造成显著的负面影响。
如果基于方框238处的评价认为查询指纹是边际的,那么查询的分类接下来取决于作为当前查询执行结果而返回的错误代码。在方框242处,分析模块170确定返回的错误代码是否为“OK”。如果是的话,那么在方框244处将查询指纹分类为允许的(例如,列入白名单),并且修改数据结构180以反映这个分类并去除查询需要评价的标志或其它指定。因此,对查询指纹的未来调用可以由查询执行引擎130针对查询执行,而无需响应于这些调用而重复分类评价。
如果分析模块170在方框242处确定针对查询的当前调用返回的错误代码是任何其它代码(诸如“DIVERT”或“TOO LONG”),那么在方框246处修改数据结构180,以反映重定向的查询类中查询指纹的分类。因此,可以执行对查询的未来调用,但是应当由查询执行引擎130进行重定向,以针对报告数据库140而不是操作数据库125执行。
上面的描述解决了以下情形:其中用于查询的数据结构180中的标志或其它指定指示需要评价。响应于查询第一次被调用时查询的长持续时间,可以触发设置标志或指定。一旦如上所述对查询进行了评价和分类,就从数据结构180中清除标志或其它指定。再次参考方框214处的决定(图2B),本系统和方法可以适应于操作数据库125或报告数据库140中的改变,这些改变可能导致查询的分类的改变。例如,由于对查询指纹进行了分类,因此操作数据库125或报告数据库140中的数据量可以已经大大增加。在通信网络120中可以已经实现了改变。例如,可以已经向使用操作数据库125或报告数据库140的企业添加了大量附加客户端终端。与自分类以来尚未改变的查询指纹无关的诸如这些的因素可能影响查询指纹的正确分类。例如,由于可操作数据库125中的数据量增加,先前被分类为允许的查询类的指纹现在可能太昂贵以至于无法针对可操作数据库125执行。
如果在方框214处分析模块170确定与已被调用的查询对应的查询指纹不是未决评价,那么在方框248处,分析模块170确定该查询先前是否已被分类为被阻塞的查询类(例如,列入黑名单)。如果是的话,那么在方框250处,分析模块170基于数据结构180中的分类来控制查询执行引擎130的操作,以阻止针对操作数据库125或报告数据库140执行查询。指示不允许查询的通知可以可选地由数据库系统100传输,以向客户端终端105、110、115通知该查询未被执行。
如果所调用的查询未被阻塞,如在方框248处所确定的,那么根据数据结构180中的对应查询指纹的分类,在方框252处(图2E)执行该查询。例如,如果对应查询指纹的分类是“允许的”,那么针对操作数据库125执行查询,而不响应于查询的当前调用而进行上述评价。否则,如果用于对应查询指纹的分类为“divert”,那么执行该查询,但是将其重定向为针对报告数据库140而非操作数据库125执行。再次地,可以响应于查询的当前调用而在不进行上述评价的情况下执行该查询。
由分析模块170分析用于所执行的查询的数据结构180,以在方框254处确定用于该查询的指纹最初是否被确定为简单查询或可接受的(例如,列入白名单的)查询。如果是的话,那么分析模块170然后至少部分地基于以下因素来确定是否需要重新评价查询指纹的数据结构180中的分类:(i)针对对应查询的当前调用的返回的错误代码,以及(ii)查询指纹的当前分类。
在方框256处,分析模块170确定查询的执行时间是否超过完成阈值时间。如果是的话,具有先前被分类为“允许的”指纹的查询的执行时间现在超过了完成阈值时间。作为这种情况的结果,可以已经发生了与查询指纹的结构无关的改变,并且可能需要修改存储在数据结构180中的查询指纹的分类。类似地,在方框254处,分析模块170可以确定所执行的查询不是简单或可接受的(例如,不是列入白名单的)查询,而是分类为偏转查询类的查询。但是,如方框264处所确定的,当前调用的查询可能导致返回“OK”错误。返回错误代码“OK”比在偏转查询类中分类的查询更能指示简单或可接受的查询。再次地,可能已经发生了与对应查询指纹的结构无关的改变,并且可能需要对数据结构180中的查询指纹的分类进行修改。
为了确定是否应当修改分类,由分析模块170获得对查询的当前调用的解释数据。在方框258处,分析模块170将获得的当前调用的解释数据与和存储在数据结构180中的查询指纹的现有分类对应的解释数据进行比较。如果在方框260处该比较表明与当前调用的查询指纹对应的解释数据与导致分类的查询调用的解释数据不同,那么可以在方框262处重置标志或其它指定。在数据结构180中重置标志或其它指定指示查询指纹再一次需要评价。重置标志或其它指定将使分析模块170响应于下一次或其它后续调用而在方框214处(图2B)确定查询指纹需要评价。该确定使得分析模块170响应于对具有主题查询指纹的查询的未来调用而开始本文所述的评价处理。重复指定查询指纹以响应于演化的触发事件进行评价,这允许即使查询指纹本身尚未改变,也可以自适应地处理可能因数据库环境改变而导致的查询负载。
方框256处的确定可以指示查询的执行时间没有超过允许的查询所预期的完成阈值时间。类似地,返回的针对偏转查询类中的查询的错误代码可以指示在方框264处该查询的执行时间确实超过了完成阈值时间,这也是预期的。即使按预期执行了这样的查询,与这些查询中的每个查询对应的查询指纹仍然可以被重新评价以提高应用对象的性能。
当前调用的查询可以具有要基于涉及查询的趋势来重新评价的查询指纹,而不是将查询作为触发事件的单个调用的结果。例如,用于查询指纹的数据结构180可以包括计数器字段。被执行的查询的每次调用都使得返回用于对应查询指纹的返回代码。可以将为查询指纹返回的错误代码的运行总数存储在计数器字段中,并在方框266处返回每个错误代码时递增(图2F)。一旦为查询指纹返回了既定数量的错误代码,就可以分析错误代码的趋势,以确定是否要重新评价查询指纹。作为这种分析的一部分,在方框268处,分析模块170确定对于查询指纹返回的错误代码的总数的至少超时阈值百分比是否太长(TOO LONG)。如果是的话,那么在方框270处,分析模块170确定当前执行的查询的查询指纹的成本是否至少与边际查询的成本相同。如果是的话,那么在方框272处修改用于查询指纹的数据结构180,以在方框272处将查询指纹分类为被阻塞的查询类,并且设置指示查询指纹需要评价的标志或其它指定。
如果在方框268处未满足返回的错误代码的超时阈值百分比,那么分析模块170在方框274处确定DIVERT错误代码和TOO LONG错误代码的组合数量是否至少构成所有返回的错误代码的组合阈值百分比。如果是的话,并且如果在方框276处确定当前执行的查询的查询指纹的成本至少与边际查询一样昂贵,那么在方框278修改用于查询指纹的数据结构180。在方框278处,修改数据结构180以将查询指纹分类为重定向的查询类,并且设置指示查询指纹需要评价的标志或其它指定。
如果在已经为查询指纹返回了既定数量的错误代码之后,既没有在方框268处满足超时阈值百分比,也没有在方框274处满足所有返回的错误代码的组合阈值百分比,那么也可以修改数据结构180。例如,在方框280处,可以修改数据结构180以将与允许的查询类中的当前执行的查询对应的查询指纹分类。也可以在方框280处设置指示查询指纹响应于对相应查询的未来调用而需要评价的标志或其它指定。
还可以响应于不同的查询趋势而在方框280处进行类似的修改。例如,在已经为查询指纹返回了既定数量的错误代码之后,并且如果在方框268处尚未满足超时阈值百分比,那么可以分析查询指纹的成本。如果在方框270处确定与当前执行的查询对应的查询指纹的成本比边际查询的成本低,那么可以修改数据结构180以将与允许的查询类中当前执行的查询对应的查询指纹进行分类。这样的场景指示了先前分类的查询,该查询表现出对应用对象的性能的影响减小的趋势。也可以在方框280处设置指示查询指纹响应于对相应查询的未来调用而需要评价的标志或其它指定。
作为另一个示例,在已经为查询指纹返回了既定数量的错误代码之后,如果:(i)在方框268处尚未满足超时阈值百分比,(ii)在方框274处尚未满足组合阈值百分比,并且(iii)在方框276处确定与当前执行的查询对应的查询指纹的成本比边际查询的成本低,那么可以在方框280处修改数据结构180。可以修改数据结构180,以将与允许的查询类中当前执行的查询对应的查询指纹进行分类。这样的场景还指示先前分类的查询,该查询表现出对应用对象的性能的影响减小的趋势。也可以在方框280处设置指示查询指纹需要响应于对相应查询的未来调用而进行评价的标志或其它指定。
计算设备实施例
图3图示了用本文描述的示例系统和方法中的一个或多个和/或等同物来配置和/或编程的示例计算设备。示例计算设备可以是计算机300,该计算机300包括通过总线325可操作地连接的处理器320、存储器335以及输入/输出端口345。在一个示例中,计算机300可以包括定义查询执行引擎130和分析模块170的逻辑,该逻辑被配置为促进查询负载评估和对查询负载的自适应处理,类似于图1中所示的数据库系统100。在不同的示例中,逻辑130、170可以以硬件、具有存储的指令的非暂态计算机可读介质305、固件和/或其组合来实现。虽然逻辑130、170被示为附接到总线325的硬件部件,但是应该认识到的是,在其它实施例中,逻辑130、170可以在处理器320中实现、存储在存储器335中或存储在盘355中。
在一个实施例中,逻辑130、170或计算设备300是用于执行所描述的动作的装置(例如,结构:硬件,非暂态计算机可读介质,固件)。在一些实施例中,计算设备可以是在云计算系统中操作的服务器、在软件即服务(SaaS)体系架构中配置的服务器、智能电话、膝上型计算机、平板计算设备等。
该装置可以例如被实现为被编程为评估和自适应地处理查询负载以减轻对应用对象的性能的负面影响的ASIC。该装置还可以被实现为存储的计算机可执行指令,该存储的计算机可执行指令作为数据310呈现给计算设备300、该数据被临时存储在存储器335中,然后由处理器320执行。
模块130、170的逻辑还可以提供用于执行评估和对查询负载的自适应处理的装置(例如,硬件、存储可执行指令的非暂态计算机可读介质、固件)。
一般性地描述了计算机300的示例配置,处理器320可以是包括双微处理器和其它多处理器体系架构的各种各样的处理器。存储器335可以包括易失性存储器和/或非易失性存储器。非易失性存储器可以包括例如ROM、PROM等。易失性存储器可以包括例如RAM、SRAM、DRAM等。
存储盘355可以经由例如输入/输出(I/O)接口(例如,卡、设备)340和输入/输出端口345可操作地连接到计算设备300。盘355可以是例如磁盘驱动器、固态盘驱动器、软盘驱动器、带驱动器、Zip驱动器、闪存卡、记忆棒等。此外,盘355可以是CD-ROM驱动器、CD-R驱动器、CD-RW驱动器、DVD ROM等。存储器335可以例如存储进程和/或数据310。盘355和/或存储器335可以存储控制和分配计算设备300的资源的操作系统。
计算设备300可以经由I/O接口340和输入/输出端口345与输入/输出(I/O)设备进行交互、该I/O接口340和输入/输出端口345通过I/O控制器330连接到总线325。输入/输出设备可以是例如键盘、麦克风、定向和选择设备、相机、视频卡、显示器、盘355、网络设备350等。输入/输出端口345可以包括例如串行端口、并行端口和USB端口。
计算设备300可以在网络环境中操作,并且因此可以经由I/O接口340和/或I/O端口345连接到网络设备350。通过网络设备350,计算设备350可以与网络进行交互。通过网络,计算设备300可以在逻辑上连接到远程计算机,诸如客户端终端105、110、115。计算设备300可以与之交互的网络包括但不限于LAN、WAN和其它网络。
定义和其它实施例
在另一个实施例中,所描述的方法和/或它们的等同物可以用计算机可执行指令来实现。因此,在一个实施例中,非暂态计算机可读/存储介质被配置有存储的算法/可执行应用的计算机可执行指令,该计算机可执行指令在由(一个或多个)机器执行时使该(一个或多个)机器(和/或相关联的部件)执行所述方法。示例机器包括但不限于处理器、计算机、在云计算系统中操作的服务器、用软件即服务(SaaS)体系架构配置的服务器、智能电话等。在一个实施例中,计算设备用被配置为执行任何所公开的方法的一个或多个可执行算法来实现。
在一个或多个实施例中,所公开的方法或它们的等同物由以下任一项执行:被配置为执行所述方法的计算机硬件;或者存储在非暂态计算机可读介质中的模块中体现的计算机指令,其中指令被配置为可执行算法,该可执行算法被配置为在由计算设备的至少一个处理器执行时执行所述方法。
虽然为了简化说明的目的,附图中示出的方法被示出和描述为算法的一系列方框,但是应该认识到的是,这些方法不受方框的顺序的限制。一些方框可以以与所示出和描述的不同的顺序出现和/或与其它方框同时发生。而且,可以使用比全部图示的方框少的方框来实现示例方法。方框可以被组合或分成多个动作/部件。此外,附加的和/或替代的方法可以采用未在方框中图示的附加动作。
以下包括本文所采用的所选择术语的定义。定义包括落入术语的范围内并且可以用于实现的部件的各种示例和/或形式。示例并不旨在是限制性的。术语的单数和复数形式都可以在定义之内。
对“一个实施例”、“实施例”、“一个示例”、“示例”等的引用指示如此描述的(一个或多个)实施例或(一个或多个)示例可以包括特定的特征、结构、特性、性质、元素或限制,但并非每个实施例或示例都必然包括该特定的特征、结构、特性、性质、元素或限制。此外,重复使用短语“在一个实施例中”不一定指代相同的实施例,但是可以指代相同的实施例。
如本文所使用的,“数据结构”是计算系统中存储在存储器、存储设备或其它计算机化系统中的数据的组织。数据结构可以是例如数据字段、数据文件、数据阵列、数据记录、数据库、数据表、图、树、链表等中的任何一个。数据结构可以由许多其它数据结构形成以及包含许多其它数据结构(例如,数据库包括许多数据记录)。根据其它实施例,数据结构的其它示例也是可能的。
如本文所使用的,“计算机可读介质”或“计算机存储介质”是指存储被配置为当被执行时执行所公开的功能中的一个或多个功能的指令和/或数据的非暂态介质。在一些实施例中,数据可以用作指令。计算机可读介质可以采取包括但不限于非易失性介质和易失性介质的形式。非易失性介质可以包括例如光盘、磁盘等。易失性介质可以包括例如半导体存储器、动态存储器等。计算机可读介质的常见形式可以包括但不限于软盘、柔性盘、硬盘、磁带、其它磁性介质、专用集成电路(ASIC)、可编程逻辑器件、紧凑盘(CD)、其它光学介质、随机存取存储器(RAM)、只读存储器(ROM)、存储器芯片或卡、存储棒、固态存储设备(SSD)、闪存驱动器、以及计算机、处理器或其它电子设备可以利用其工作的其它介质。如果每种类型的介质在一个实施例中被选择用于实现,则其可以包括被配置为执行所公开的和/或所要求保护的功能中的一个或多个功能的算法的存储指令。
如本文所使用的,“逻辑”表示利用计算机或电气硬件、具有存储的可执行应用或程序模块的指令的非暂态介质和/或这些的组合实现的部件,以执行如本文公开的任何功能或动作,和/或使得来自另一逻辑、方法和/或系统的功能或动作如本文所公开的那样被执行。等同的逻辑可以包括固件、利用算法编程的微处理器、离散逻辑(例如,ASIC)、至少一个电路、模拟电路、数字电路、编程的逻辑器件、包含算法的指令的存储器设备等,其中任何一个可以被配置为执行所公开的功能中的一个或多个功能。在一个实施例中,逻辑可以包括一个或多个门、门的组合、或者被配置为执行所公开的功能中的一个或多个功能的其它电路部件。在描述多个逻辑的情况下,有可能将多个逻辑合并入一个逻辑中。类似地,在描述单个逻辑的情况下,有可能在多个逻辑之间分配该单个逻辑。在一个实施例中,这些逻辑中的一个或多个是与执行所公开的和/或所要求保护的功能相关联的对应结构。选择实现哪种类型的逻辑可以基于期望的系统条件或规范。例如,如果考虑更高的速度,则将选择硬件来实现功能。如果考虑更低的成本,则将选择存储的指令/可执行应用来实现功能。
“可操作的连接”或实体通过其“可操作地连接”的连接是可以在其中发送和/或接收信号、物理通信和/或逻辑通信的连接。可操作的连接可以包括物理接口、电气接口和/或数据接口。可操作的连接可以包括足以允许可操作的控制的接口和/或连接的不同组合。例如,两个实体可以可操作地连接,以直接或者通过一个或多个中间实体(例如,处理器、操作系统、逻辑、非暂态计算机可读介质)彼此传送信号。逻辑通信信道和/或物理通信信道可以被用于创建可操作的连接。
如本文所使用的,“用户”包括但不限于一个或多个人、计算机或其它设备、或者这些的组合。
虽然已经相当详细地图示和描述了所公开的实施例,但并不旨在将所附权利要求的范围限制或以任何方式限定到这样的细节。当然,不可能为了描述主题的各个方面而描述部件或方法的每种预期的组合。因此,本公开不限于所示出和描述的特定细节或说明性示例。因此,本公开旨在涵盖落入所附权利要求的范围内的变更、修改和变化。
就术语“包含”在具体实施方式或权利要求书中被采用的程度而言,它旨在以类似于当术语“包括”作为过渡词在权利要求中被采用时所解释的方式是包含性的。
就术语“或”在具体实施方式或权利要求书中被采用的程度而言(例如,A或B),其旨在意味着“A或B或两者”。当申请人旨在指示“仅A或B但不是两者”时,那么将使用短语“仅A或B但不是两者”。因此,术语“或”在本文的使用是包含性的,而不是排他性使用。
Claims (15)
1.一种存储计算机可执行指令的非暂态计算机可读介质,该计算机可执行指令在由计算系统的至少处理器执行时使得计算系统执行以下操作:
由至少所述处理器确定由数据库管理系统执行的查询具有超过完成阈值的执行持续时间;
由至少所述处理器将与查询对应的指纹存储在数据结构中;
由至少所述处理器响应于查询的执行持续时间超过完成阈值而标记指纹以供评价;
响应于接收到与指纹对应的后续查询请求,并基于指纹被标记,分析指纹的统计信息,以确定后续查询请求的执行是否将对数据库管理系统造成不可接受的负面影响;
由至少所述处理器基于分析的结果来修改数据结构,以将指纹分类为多个不同的查询类之一;以及
由至少所述处理器基于指纹的分类来控制未来的查询请求的执行。
2.如权利要求1所述的非暂态计算机可读介质,还包括在由至少所述处理器执行时使得计算系统执行以下操作的指令:
通过将指纹指派给(i)允许的查询类,或(ii)被阻塞的查询类,基于分析的结果对指纹进行分类;
其中(i)如果指纹被指派给允许的查询类,那么将在不重复分析统计信息的情况下执行未来的查询直至完成,并且(ii)如果指纹被指派给被阻塞的查询类,那么将阻止执行未来的查询。
3.如权利要求1所述的非暂态计算机可读介质,还包括在由至少所述处理器执行时使得计算系统执行以下操作的指令:
响应于导致指纹被标记以供评价的查询的执行而阻止分析统计信息以对指纹进行分类。
4.一种计算系统,包括:
至少一个处理器,连接到至少一个存储器;以及
分析模块,存储在非暂态计算机可读介质上并且包括指令,该指令在由所述至少一个处理器执行时使得计算系统执行以下操作:
由至少所述处理器确定由数据库管理系统执行的查询具有超过完成阈值的执行持续时间;
由至少所述处理器将与查询对应的指纹存储在数据结构中;
由至少所述处理器响应于查询的执行持续时间超过完成阈值而标记指纹以供评价;
响应于接收到与指纹对应的后续查询请求,并基于指纹被标记,分析指纹的统计信息,以确定后续查询请求的执行是否将对数据库管理系统造成不可接受的负面影响;
由至少所述处理器基于分析的结果来修改数据结构,以将指纹分类为多个不同的查询类之一;以及
由至少所述处理器基于指纹的分类来控制未来的查询请求的执行。
5.如权利要求4所述的计算系统,其中分析模块还包括在由所述至少一个处理器执行时使得计算系统执行以下操作的指令:
通过将指纹指派给(i)允许的查询类,或(ii)被阻塞的查询类,基于分析的结果对指纹进行分类;
其中(i)如果指纹被指派给允许的查询类,那么将在不重复分析统计信息的情况下执行未来的查询直至完成,并且(ii)如果指纹被指派给被阻塞的查询类,那么将阻止执行未来的查询。
6.如权利要求1或4所述的计算系统,其中统计信息包括查询解释数据或数据库服务器处理程序统计信息。
7.如权利要求1或4所述的计算系统,其中要分析的统计信息不包括要求利用非活动数据库资源来获得的数据库性能统计信息。
8.如权利要求1或4所述的计算系统,其中所述多个不同的查询类包括用于与要针对第一数据库执行的查询对应的指纹的允许的查询类。
9.如权利要求8所述的计算系统,其中所述多个不同的查询类还包括用于与要针对不同于第一数据库的第二数据库执行的查询对应的指纹的重定向的查询类。
10.如权利要求9所述的计算系统,其中指令还包括在由至少所述处理器执行时使得计算系统执行以下操作的指令:
使得针对第一数据库执行查询;以及
基于指纹被分类在重定向的查询类中,使得针对第二数据库执行未来的查询。
11.如权利要求4所述的计算系统,其中分析模块还包括在由所述至少一个处理器执行时使得计算系统执行以下操作的指令:
响应于导致指纹被标记以供评价的查询的执行而阻止分析统计信息以对指纹进行分类。
12.一种计算机实现的方法,该方法包括:
确定由数据库管理系统执行的查询具有超过完成阈值的执行持续时间;
将与查询对应的指纹存储在数据结构中;
响应于查询的执行持续时间超过完成阈值而标记指纹以供评价;
响应于接收到与指纹对应的后续查询请求,并基于指纹被标记,分析指纹的统计信息,以确定后续查询请求的执行是否将对数据库管理系统造成不可接受的负面影响;
基于分析的结果来修改数据结构,以将指纹分类为多个不同的查询类之一;以及
基于指纹的分类来控制未来的查询请求的执行。
13.如权利要求12所述的方法,其中,通过将指纹指派给(i)允许的查询类,或(ii)被阻塞的查询类,基于分析的结果对指纹进行分类;
其中(i)如果指纹被指派给允许的查询类,那么将在不重复分析统计信息的情况下执行未来的查询直至完成,并且(ii)如果指纹被指派给被阻塞的查询类,那么将阻止执行未来的查询。
14.如权利要求13所述的方法,其中允许的查询类中的指纹与要针对第一数据库执行的查询对应,并且其中所述不同的查询类还包括重定向的查询类,该重定向的查询类用于与被指定用于针对不同于第一数据库的第二数据库来执行的查询对应的指纹。
15.如权利要求14所述的方法,其中控制未来的查询的执行包括:
使得针对第一数据库执行与指纹对应的查询直至完成;以及
基于重定向的查询类中的指纹的分类,使得针对第二数据库执行与指纹对应的未来的查询。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/980,022 US11829362B2 (en) | 2018-05-15 | 2018-05-15 | Automatic database query load assessment and adaptive handling |
US15/980,022 | 2018-05-15 | ||
PCT/US2019/021287 WO2019221806A1 (en) | 2018-05-15 | 2019-03-08 | Automatic database query load assessment and adaptive handling |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111742309A true CN111742309A (zh) | 2020-10-02 |
Family
ID=65818726
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201980014605.7A Pending CN111742309A (zh) | 2018-05-15 | 2019-03-08 | 自动数据库查询负载评估和自适应处理 |
Country Status (5)
Country | Link |
---|---|
US (2) | US11829362B2 (zh) |
EP (1) | EP3794461B1 (zh) |
JP (1) | JP7369706B2 (zh) |
CN (1) | CN111742309A (zh) |
WO (1) | WO2019221806A1 (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20200050693A1 (en) * | 2018-08-07 | 2020-02-13 | Salesforce.Com, Inc. | Techniques and architectures for tracking a logical clock across non-chronologically ordered transactions |
US11210401B2 (en) | 2020-02-07 | 2021-12-28 | The Bank Of New York Mellon | Methods and systems for implementing automated controls assessment in computer systems |
US11256694B2 (en) * | 2020-04-27 | 2022-02-22 | Hewlett Packard Enterprise Development Lp | Tolerance level-based tuning of query processing |
US20220129342A1 (en) * | 2020-10-23 | 2022-04-28 | ZenDesk, Inc. | Conserving computer resources through query termination |
US11782918B2 (en) * | 2020-12-11 | 2023-10-10 | International Business Machines Corporation | Selecting access flow path in complex queries |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100312776A1 (en) * | 2009-06-04 | 2010-12-09 | International Business Machines Corporation | Intelligent performance analysis and isolaton of potential problem queries |
CN103886005A (zh) * | 2012-12-19 | 2014-06-25 | 国际商业机器公司 | 用于为增强查询性能使用临时性能对象的方法和系统 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2001084257A (ja) | 1999-09-13 | 2001-03-30 | Hitachi Ltd | 問合せ処理方法及びシステム |
US7596560B2 (en) * | 2004-12-23 | 2009-09-29 | Raytheon Company | System and method for adaptive query identification and acceleration |
JP2009211588A (ja) | 2008-03-06 | 2009-09-17 | Nec Corp | データベース・アクセス遅延の解析情報採取装置、解析情報採取方法およびプログラム |
US9910892B2 (en) * | 2008-07-05 | 2018-03-06 | Hewlett Packard Enterprise Development Lp | Managing execution of database queries |
US8892544B2 (en) * | 2009-04-01 | 2014-11-18 | Sybase, Inc. | Testing efficiency and stability of a database query engine |
US8290939B2 (en) * | 2010-06-04 | 2012-10-16 | International Busines Machines Corporation | Visualizing query results in stream processing systems |
US20140089311A1 (en) | 2012-09-26 | 2014-03-27 | Anita Richards | System. method, and computer-readable medium for classifying problem queries to reduce exception processing |
JP6393193B2 (ja) | 2014-09-30 | 2018-09-19 | Kddi株式会社 | データ仮想化装置及び大規模データ処理プログラム |
US9805099B2 (en) * | 2014-10-30 | 2017-10-31 | The Johns Hopkins University | Apparatus and method for efficient identification of code similarity |
US20180060327A1 (en) * | 2016-08-31 | 2018-03-01 | Red Hat, Inc. | Calculating a failure intensity value for a group of search sessions |
-
2018
- 2018-05-15 US US15/980,022 patent/US11829362B2/en active Active
-
2019
- 2019-03-08 WO PCT/US2019/021287 patent/WO2019221806A1/en unknown
- 2019-03-08 EP EP19712457.1A patent/EP3794461B1/en active Active
- 2019-03-08 CN CN201980014605.7A patent/CN111742309A/zh active Pending
- 2019-03-08 JP JP2020549707A patent/JP7369706B2/ja active Active
-
2023
- 2023-10-24 US US18/383,111 patent/US20240054128A1/en active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100312776A1 (en) * | 2009-06-04 | 2010-12-09 | International Business Machines Corporation | Intelligent performance analysis and isolaton of potential problem queries |
CN103886005A (zh) * | 2012-12-19 | 2014-06-25 | 国际商业机器公司 | 用于为增强查询性能使用临时性能对象的方法和系统 |
Also Published As
Publication number | Publication date |
---|---|
US20190354622A1 (en) | 2019-11-21 |
EP3794461A1 (en) | 2021-03-24 |
JP2021523429A (ja) | 2021-09-02 |
US20240054128A1 (en) | 2024-02-15 |
EP3794461B1 (en) | 2024-03-27 |
JP7369706B2 (ja) | 2023-10-26 |
WO2019221806A1 (en) | 2019-11-21 |
US11829362B2 (en) | 2023-11-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3794461B1 (en) | Automatic database query load assessment and adaptive handling | |
US10404736B2 (en) | Method and system for placing a workload on one of a plurality of hosts | |
US11693962B2 (en) | Malware clustering based on function call graph similarity | |
US9813450B1 (en) | Metadata-based verification of artifact quality policy compliance | |
US11586735B2 (en) | Malware clustering based on analysis of execution-behavior reports | |
US10558810B2 (en) | Device monitoring policy | |
US10915533B2 (en) | Extreme value computation | |
CN109062965B (zh) | 大数据分析系统、服务器、数据处理方法和存储介质 | |
US20180331924A1 (en) | System monitoring device | |
US10049113B2 (en) | File scanning method and apparatus | |
CN112306383A (zh) | 执行作业的方法、计算节点、管理节点及计算设备 | |
CN111338958A (zh) | 一种测试用例的参数生成方法、装置及终端设备 | |
CN110084476B (zh) | 案件调整方法、装置、计算机设备和存储介质 | |
WO2023109046A1 (zh) | 异常检测方法、装置、电子设备及存储介质 | |
US20230035666A1 (en) | Anomaly detection in storage systems | |
US9659041B2 (en) | Model for capturing audit trail data with reduced probability of loss of critical data | |
US10255128B2 (en) | Root cause candidate determination in multiple process systems | |
CN114221807A (zh) | 访问请求处理方法、装置、监控设备及存储介质 | |
CN113722349A (zh) | 基于分布式数据库的sql审核方法、装置和计算机设备 | |
Srikrishnan et al. | A log data analytics based scheduling in open source cloud software | |
CN117221250A (zh) | 资源利用率的确定方法、装置和计算机设备 | |
CN115080960A (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 |