首页> 中国专利> 用于数据库管理系统的基于学习的工作负载资源优化

用于数据库管理系统的基于学习的工作负载资源优化

摘要

DBMS训练子系统利用训练数据来训练DBMS工作负载管理器模型,训练数据标识用于执行先前的DBMS数据访问请求的资源。子系统将每个请求的高级特征和编译时操作集成到向量中,并将类似的向量聚类成模板。请求被划分成工作负载,每个工作负载由训练直方图表示,训练直方图描述与工作负载相关联的模板的分布,并且标识当执行整个工作负载时消耗的资源的总量和类型。所得到的知识被用于训练该模型以通过以下步骤预测生产资源要求:i)将生产查询组织成候选工作负载;ii)为每个候选者导出在形式和功能上与训练直方图相似的直方图;iii)使用新导出的直方图来预测每个候选者的资源要求;iv)选择具有能够用可用资源来满足的最大资源要求的候选者;以及v)执行所选择的工作负载。

著录项

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2023-08-15

    实质审查的生效 IPC(主分类):G06F16/90 专利申请号:2021800705960 申请日:20210924

    实质审查的生效

说明书

背景技术

本发明一般涉及数据库管理系统(DBMS),尤其涉及对由数据库查询的执行引起的资源要求的预测或估计。

DBMS的当前工作负载是寻求分析或修订当前正在由DBMS处理的数据库的内容的一组数据访问请求(诸如结构化查询语言(SQL)查询)。DBMS工作负载可能需要非常不同的数量和类型的资源,其中每个工作负载需要计算机存储器、CPU周期、I/O带宽、辅助存储器和其它资源的特定组合和特定数量。

如果DBMS能够准确地预测处理每个工作负载语句所需的资源的类型和数量,则DBMS运行更高效。因为工作负载查询或其它类型的数据访问请求没有显式地标识它消耗的资源,所以已知的DBMS最多能够通过对每个查询应用通用的静态经验规则来猜测资源要求。

这样的规则通常仅考虑每个查询语句的表达语言,通常迫使DBMS提取从每个工作负载语句提取的低级特征,然后将特定的资源估计模型应用于每个所解析的特征。例如,一个规则可以被调整以预测处理SQL GROUP BY谓词所需的资源。当接收到包含GROUP BY谓词的查询时,DBMS将解析该查询以标识处理该查询的GROUP BY功能所需的几十个数据库操作。DBMS然后将应用独特的估计模型来分析所提取的低级特征和资源类型的每个组合,以猜测由处理该特征引起的资源要求。DBMS然后将通过聚合它针对每个低级特征的资源消耗估计来预测GROUP BY谓词的总体要求。对于查询的每个资源消耗操作或谓词,将重复该过程,以便估计整个查询的资源要求。

发明内容

本发明的实施例包括用于自学习数据库管理系统(DBMS)的系统、方法和计算机程序产品。这些实施例包括专家工作负载管理器组件和训练子系统,训练子系统使用机器学习技术来训练认知模型以估计整批查询或其他类型的数据访问请求的资源要求。

在第一类“训练模式”实施例中,DBMS的训练子系统向工作负载管理模型提交训练数据,该训练数据标识在服务于先前的数据访问请求时由DBMS先前使用的资源的数量和类型。系统标识每个请求的各种高级特征(诸如从请求的文本解析的标记(tokens)),以及由DBMS的查询优化器组件生成的执行计划所引用的度量和编译时操作。系统将每个请求的高级特征打包为查询向量,并且向量被聚类成相似向量的互斥子集(或“模板”)。子系统将数据访问请求组织成批量工作负载,并且每个工作负载与直方图相关联,该直方图表示与组成该工作负载的一批数据访问请求相关联的模板的分布。因为训练数据标识由每个请求的先前执行所引起的资源的数量和类型,所以在一些实施例中,直方图还与指定服务于直方图的对应工作负载所需的资源的数量和类型的资源要求集合相关联。

在其它实施例中,每个工作负载与多个直方图相关联。在这样的实施例中,与每个直方图相关联的资源要求集合指定服务于直方图的对应工作负载所需的资源类型中的仅一种类型的数量。

在任一情况下,该知识然后被格式化成机器学习语料库的形式(诸如三重存储数据结构,其将包括人工智能“知识”的概念、规则和依赖性表示为3元组向量集合),并且被用于训练模型。在生产期间,响应于接收到表示与一个生产工作负载中的所有请求相关联的模板的分布的直方图,完全训练的模型然后将能够作为所接收的直方图的唯一函数来预测执行整个生产工作负载的聚合成本。

在第二类“生产模式”实施例中,生产DBMS结合训练模型应用由训练模式实施例导出的知识来估计执行成批的传入数据访问请求所需的资源。DBMS以与在训练模式期间执行的方式类似的方式将每个传入请求与随后被分配给先前生成的模板之一的查询向量相关联。DBMS通过一次一个地添加传入请求来构建一系列候选工作负载,以创建日益资源密集的工作负载。如在训练阶段中,每个候选工作负载与直方图相关联,该直方图标识模板在构成该工作负载的语句中的分布。当生成每个新的候选工作负载时,DBMS将工作负载的对应的一个或多个直方图发送到经训练的模型。作为响应,该模型基于该模型的先前训练来预测工作负载的资源要求。此过程一直继续,直到候选工作负载的要求变得太大而不能被当前可用的资源满足。然后,次最大工作负载被认为是可以利用可用资源执行的最大工作负载,并且该工作负载被转发到DBMS的查询执行引擎以供进一步处理。

根据本发明的一个方面,提供了一种数据库管理系统DBMS的训练子系统,包括处理器、耦接到所述处理器的存储器、以及耦接到所述处理器的计算机可读硬件存储设备,所述存储设备包含程序代码,所述程序代码被配置为由所述处理器经由所述存储器运行以实现一种用于数据库管理系统的自学习箱式(binned)资源优化的方法,所述方法包括:所述训练子系统接收训练数据,所述训练数据包括:训练语句集合,每个训练语句请求访问由所述DBMS管理的数据库,以及所述DBMS执行所述训练语句集合中的每个语句所需的资源的类型和数量的记录;所述子系统生成查询向量集合,每个查询向量标识所述训练语句中的对应语句的高级特性;所述子系统将所述查询向量集合分配给模板集合,其中,所述查询向量集合中的每个向量被分配给所述模板集合中的一个模板,以及其中,所述模板集合中的每个模板被填充有彼此之间的数学相似度超过阈值相似度的查询向量;所述子系统将所述训练语句集合划分成训练工作负载集合,其中,所述训练工作负载中的每个工作负载与对应的直方图相关联,其中,每个对应直方图的每个箱唯一地对应于所述模板集合中的一个模板,以及其中,第一对应直方图的每个箱标识所述第一对应直方图的对应的工作负载的多少个语句与所述模板集合中的每个模板相关联;所述子系统将每个对应直方图与由该直方图的对应的训练工作负载的每个训练语句的执行在过去消耗的资源集合相关联;所述子系统将从所述训练数据中推断的知识添加到能够被用于训练机器学习模型的训练语料库中;以及所述子系统训练所述DBMS的工作负载管理组件的认知模型以预测批量数据访问请求的资源要求,其中,所述训练包括:将所述训练语料库提交给所述认知模型。

根据另一方面,本发明提供了一种用于数据库管理系统的自学习箱式资源优化的方法,所述方法包括:数据库管理系统DBMS的训练子系统接收训练数据,所述训练数据包括:训练语句集合,每个训练语句请求访问由所述DBMS管理的数据库,以及所述DBMS执行所述训练语句集合中的每个语句所需的资源的类型和数量的记录;所述子系统生成查询向量集合,每个查询向量标识所述训练语句中的对应语句的高级特性;所述子系统将所述查询向量集合分配给模板集合,其中,所述查询向量集合中的每个向量被分配给所述模板集合中的一个模板,以及其中,所述模板集合中的每个模板被填充有彼此之间的数学相似度超过阈值相似度的查询向量;所述子系统将所述训练语句集合划分成训练工作负载集合,其中,所述训练工作负载中的每个工作负载与对应的直方图相关联,其中,每个对应直方图的每个箱唯一地对应于所述模板集合中的一个模板,以及其中,第一对应直方图的每个箱标识所述第一对应直方图的对应的工作负载的多少个语句与所述模板集合中的每个模板相关联;所述子系统将每个对应直方图与由该直方图的对应的训练工作负载的每个训练语句的执行在过去消耗的资源集合相关联;所述子系统将从所述训练数据中推断的知识添加到能够被用于训练机器学习模型的训练语料库中;以及所述子系统训练所述DBMS的工作负载管理组件的认知模型以预测批量数据访问请求的资源要求,其中,所述训练包括:将所述训练语料库提交给所述认知模型。

根据本发明的另一方面,提供了一种用于数据库管理系统DBMS的自学习箱式资源优化的计算机程序产品,所述计算机程序产品包括具有程序指令的计算机可读存储介质,所述程序指令能够由处理器执行以使得所述处理器执行一种用于数据库管理系统的自学习箱式资源优化的方法,所述方法包括:数据库管理系统DBMS的训练子系统接收训练数据,所述训练数据包括:训练语句集合,每个训练语句请求访问由所述DBMS管理的数据库,以及所述DBMS执行所述训练语句集合中的每个语句所需的资源的类型和数量的记录;所述子系统生成查询向量集合,每个查询向量标识所述训练语句中的对应语句的高级特性;所述子系统将所述查询向量集合分配给模板集合,其中,所述查询向量集合中的每个向量被分配给所述模板集合中的一个模板,以及其中,所述模板集合中的每个模板被填充有彼此之间的数学相似度超过阈值相似度的查询向量;所述子系统将所述训练语句集合划分成训练工作负载集合,其中,所述训练工作负载中的每个工作负载与对应的直方图关联,其中,每个对应直方图的每个箱唯一地对应于所述模板集合中的一个模板,以及其中,第一对应直方图的每个箱标识所述第一对应直方图的对应的工作负载的多少个语句与所述模板集合中的每个模板相关联;所述子系统将每个对应直方图与由该直方图的对应的训练工作负载的每个训练语句的执行在过去消耗的资源集合相关联;所述子系统将从所述训练数据中推断的知识添加到能够被用于训练机器学习模型的训练语料库中;以及所述子系统训练所述DBMS的工作负载管理组件的认知模型以预测批量数据访问请求的资源要求,其中,所述训练包括:将所述训练语料库提交给所述认知模型。

根据本发明的另一方面,提供了一种数据库管理系统DBMS,包括处理器、耦接到所述处理器的存储器、以及耦接到所述处理器的计算机可读硬件存储设备,所述存储设备包含程序代码,所述程序代码被配置为由所述处理器经由所述存储器运行以实现一种用于数据库管理系统的自学习箱式资源优化的方法,所述方法包括:所述DBMS接收生产语句集合和认知模型,其中,每个生产语句请求访问由所述DBMS管理的数据库,所述认知模型被训练以预测批量数据访问请求的资源要求;所述DBMS生成查询向量集合,其中,所述查询向量集合中的每个向量标识所述生产语句集合中的对应语句的高级特性,以及其中,所述查询向量集合中的特定向量的每个元素标识所述生产语句集合中的对应语句的独特高级特性;所述DBMS将所述查询向量集合中的每个向量分配给由所述认知模型的聚类模型维护的模型模板集合中的对应模板;所述DBMS迭代地生成最终的生产工作负载,其中,每次迭代包括以下步骤:所述DBMS将从所述生产语句集合中选择的下一个语句添加到候选生产工作负载,其中,所述下一个语句先前未被添加到所述候选生产工作负载,所述DBMS尝试将所述候选生产工作负载与候选直方图相关联,其中,所述候选直方图的每个箱标识与所述模型模板集合中的被唯一分配给该箱的模板相关联的所述候选生产工作负载的语句的总数;所述DBMS如果能够将所述候选生产工作负载与所述候选直方图相关联,则根据所述认知模型的训练,预测执行所述候选生产工作负载将需要的资源的数量和类型等于由所述认知模型根据所述认知模型的训练而标识为由于执行由匹配的直方图表征的任何工作负载所引起的那些资源,所述DBMS如果确定执行所述候选生产工作负载将需要比所述DBMS当前可用的资源更多的资源,则从所述候选生产工作负载中删除最近添加的语句,并将所得到的工作负载视为最终的生产工作负载,以及所述DBMS如果确定执行所述候选生产工作负载将不需要比当前可用的资源更多的资源,则继续生成最终的生产工作负载的下一次迭代;以及所述DBMS将所述最终的生产工作负载转发到所述DBMS的查询执行引擎以由所述DBMS执行。

根据本发明的另一方面,提供了一种方法,包括:生产数据库管理系统DBMS接收生产语句集合和认知模型,其中,每个生产语句请求访问由所述DBMS管理的数据库,所述认知模型被训练以预测批量数据访问请求的资源要求;所述DBMS生成查询向量集合,其中,所述查询向量集合中的每个向量标识所述生产语句集合中的对应语句的高级特性,以及其中,所述查询向量集合中的特定向量的每个元素标识所述生产语句集合中的对应语句的独特高级特性;所述DBMS将所述查询向量集合中的每个向量分配给由所述认知模型的聚类模型维护的模型模板集合中的对应模板;所述DBMS迭代地生成最终的生产工作负载,其中,每次迭代包括以下步骤:所述DBMS将从所述生产语句集合中选择的下一个语句添加到候选生产工作负载,其中,所述下一个语句先前未被添加到所述候选生产工作负载,所述DBMS尝试将所述候选生产工作负载与候选直方图相关联,其中,所述候选直方图的每个箱标识与所述模型模板集合中的被唯一分配给该箱的模板相关联的所述候选生产工作负载的语句的总数;所述DBMS如果能够将所述候选生产工作负载与所述候选直方图相关联,则根据所述认知模型的训练,预测执行所述候选生产工作负载将需要的资源的数量和类型等于由所述认知模型根据所述认知模型的训练而标识为由于执行由匹配的直方图表征的任何工作负载所引起的那些资源,所述DBMS如果能够导出匹配的直方图,则预测执行所述候选生产工作负载将需要的资源的数量和类型等于由所述认知模型根据所述认知模型的训练而标识为由于执行由所述匹配的直方图表征的任何工作负载所引起的那些资源,所述DBMS如果确定执行所述候选生产工作负载将需要比所述DBMS当前可用的资源更多的资源,则从所述候选生产工作负载中删除最近添加的语句,并将所得到的工作负载视为最终的生产工作负载,以及所述DBMS如果确定执行所述候选生产工作负载将不需要比当前可用的资源更多的资源,则继续生成最终的生产工作负载的下一次迭代;以及所述DBMS将所述最终的生产工作负载转发到所述DBMS的查询执行引擎以由所述DBMS执行。

附图说明

图1示出了根据本发明的实施例的云计算环境;

图2示出了根据本发明的实施例的抽象模型层;

图3示出了根据本发明的实施例的可以被用于实现用于数据库管理系统的自学习箱式资源优化的方法的计算机系统和计算机程序代码的结构;

图4示出了根据本发明的实施例的数据库管理系统的自学习工作负载管理组件和相关组件的体系结构;

图5是示出根据本发明的实施例的用于训练自学习DBMS工作负载管理器以执行箱式资源优化以及然后使用该训练的结果来优化对生产环境中的资源要求的估计的方法的高级流程图;

图6是示出根据本发明的实施例的用于利用自学习箱式资源优化来训练DBMS系统的步骤的流程图;

图7是示出根据本发明的实施例的具有自学习箱式资源优化的DBMS系统的步骤的流程图。

具体实施方式

估计DBMS资源要求的已知方法采用相对不复杂的工作负载管理机制,其必须从个体数据访问语句提取低级特征,然后将每个所提取的特征与对应的要求集合相关联。这些机制没有考虑与工作负载中多个语句的并行处理相关的更多细微因素,并且没有提供在没有人类数据库管理员维护的情况下运行所需的灵活性和稳健性。

已知的DBMS工作负载管理器技术还遭受由它们需要使用不同的资源消耗模型来分析低级特征和资源类型的每个可能组合而引起的复杂性和开销的影响。已知的实施方式还需要连续的监视和维护,以便每当存在对DBMS应用、数据库模式、计算平台或所提交的工作负载的一般组成或定时的改变时手动地修改这些模型。

本发明的实施例提供了改进已知DBMS所采用的工作负载管理子系统和技术的方法、系统和计算机程序产品。这些改进包括包含认知模型的自学习工作负载管理功能或组件,该认知模型被训练以预测在工作负载水平的资源要求。与试图每次猜测对一个语句的要求的现有DBMS工作负载管理器不同,本发明使用估计整个工作负载的资源要求的自上而下的方法。

通常,自上而下的估计模型比自下而上的模型更容易实现,自下而上的模型必须分析每个低级查询特征的资源要求。然而,自上而下的模型通常不太准确,因为这样的模型在生成针对个体查询语句的资源估计时访问较少的信息。

本发明通过分析整个工作负载批的查询语句的资源要求,而不是仅仅通过解析孤立的查询来解决这个问题。因为工作负载可以包含竞争各种资源的大量异构数据访问语句,所以实施例根据整个工作负载的特定高级特征特性来估计资源要求。

在本文档中,术语“数据访问请求”、“数据库访问请求”、“数据库查询”、“数据访问语句”和类似术语有时将可互换地用于指代由DBMS接收的请求对数据库的数据元素、索引和其它内容进行添加、删除、更新和检索的指令。尽管这些术语的特定定义可例如将“查询”与“语句”相区分,例如当SQL查询被定义为由多个语句组成时,这样的区分与本发明的形式或功能没有密切关系。取决于实现者的偏好和技术考虑,各种实施例可被配置为使用相同的步骤来处理个体SQL语句、整个查询、或其它类型的数据访问请求。

这些特性包括语法元素(如结构化查询语言(SQL)操作符)、语义上有意义的标识符(如表、列和子模式别名)以及由DBMS的优化器模块生成的查询执行计划的特征。特定实施例将这些分析步骤的至少一部分实现为分布-回归学习问题,该分布-回归学习问题生成能够被提交给深度学习神经网络或被并入训练数据的机器学习语料库中的向量数据结构。当被投入生产时,已经通过该实施例的自上向下、面向批的方法训练的改进的工作负载管理器可以更准确地确定向现有DBMS工作负载添加单个查询是否会过度分配有限的资源。

本发明的实施例还通过使DBMS免于需要提取和分析每个查询语句的每个低级特征来改进已知的DBMS工作负载管理组件。因此,实施例不需要独特的资源估计模型来分析每种类型的低级特征和查询运算符或谓词。并且,因为本发明利用经验智能地学习哪些资源消耗预测是最准确的或产生最大的性能改进,所以当数据库模式、应用或计算平台配置、或提交给DBMS的工作负载的总体定时或组成发生变化时,实施例不必被手动地重新配置。

应当理解的是,尽管本公开包括关于云计算的详细描述,但是本文中记载的教导的实现不限于云计算环境。相反,本发明的实施例能够结合现在已知或以后开发的任何其它类型的计算环境来实现。

云计算是一种服务交付模型,用于实现对可配置计算资源(例如,网络、网络带宽、服务器、处理、存储器、存储、应用、虚拟机和服务)的共享池的方便的按需网络访问,可配置计算资源可以以最小的管理努力或与服务的提供者的交互来快速供应和释放。该云模型可以包括至少五个特性、至少三个服务模型和至少四个部署模型。

特性如下:

按需自助:云消费者可以单方面地自动地根据需要提供计算能力,诸如服务器时间和网络存储,而不需要与服务的提供者进行人工交互。

广泛的网络接入:能力在网络上可用,并且通过促进由异构的薄或厚客户端平台(例如,移动电话、膝上型计算机和PDA)使用的标准机制来访问。

资源池化:供应商的计算资源被集中以使用多租户模型来服务多个消费者,其中不同的物理和虚拟资源根据需求被动态地分配和重新分配。存在位置无关的意义,因为消费者通常不控制或不知道所提供的资源的确切位置,但是能够在较高抽象级别(例如国家、州或数据中心)指定位置。

快速弹性:在一些情况下,可以快速且弹性地提供快速向外扩展的能力和快速向内扩展的能力。对于消费者,可用于提供的能力通常看起来不受限制,并且可以在任何时间以任何数量购买。

测量服务:云系统通过利用在适合于服务类型(例如,存储、处理、带宽和活动用户账户)的某一抽象级别的计量能力来自动地控制和优化资源使用。可以监视、控制和报告资源使用,从而为所利用服务的提供者和消费者两者提供透明度。

服务模型如下:

软件即服务(SaaS):提供给消费者的能力是使用在云基础设施上运行的提供者的应用。应用程序可通过诸如web浏览器(例如,基于web的电子邮件)等瘦客户机界面从各种客户机设备访问。消费者不管理或控制包括网络、服务器、操作系统、存储、或甚至个别应用能力的底层云基础结构,可能的例外是有限的用户专用应用配置设置。

平台即服务(PaaS):提供给消费者的能力是将消费者创建或获取的应用部署到云基础设施上,该消费者创建或获取的应用是使用由提供商支持的编程语言和工具创建的。消费者不管理或控制包括网络、服务器、操作系统或存储的底层云基础设施,但具有对部署的应用和可能的应用托管环境配置的控制。

基础设施即服务(IaaS):提供给消费者的能力是提供处理、存储、网络和消费者能够部署和运行任意软件的其它基本计算资源,所述软件可以包括操作系统和应用。消费者不管理或控制底层云基础设施,但具有对操作系统、存储、部署的应用的控制,以及可能对选择的联网组件(例如,主机防火墙)的有限控制。

部署模型如下:

私有云:云基础设施仅为组织操作。它可以由组织或第三方管理,并且可以存在于场所内或场所外。

社区云:云基础设施由若干组织共享,并且支持具有共享关注(例如,任务、安全要求、策略和合规性考虑)的特定社区。它可以由组织或第三方管理,并且可以存在于场所内或场所外。

公共云:云基础设施可用于一般公众或大型工业群体,并且由销售云服务的组织拥有。

混合云:云基础设施是两个或更多云(私有、共同体或公共)的组合,所述云保持唯一实体,但是通过使数据和应用能够移植的标准化或私有技术(例如,用于云之间的负载平衡的云突发)绑定在一起。

云计算环境是面向服务的,其焦点在于无状态、低耦合、模块性和语义互操作性。在云计算的核心是包括互连节点的网络的基础设施。

现在参考图1,描绘了说明性云计算环境50。如图所示,云计算环境50包括云消费者使用的本地计算设备可以与其通信的一个或多个云计算节点10,本地计算设备例如是个人数字助理(PDA)或蜂窝电话54A、台式计算机54B、膝上型计算机54C和/或汽车计算机系统54N。节点10可以彼此通信。它们可以被物理地或虚拟地分组(未示出)在一个或多个网络中,诸如如上文描述的私有云、社区云、公共云或混合云或其组合。这允许云计算环境50提供基础设施即服务、平台即服务和软件即服务,云消费者不需要为其维护本地计算设备上的资源。应当理解,图1中所示的计算设备54A-N的类型仅旨在说明,并且计算节点10和云计算环境50可通过任何类型的网络和网络可寻址连接(例如,使用网络浏览器)与任何类型的计算机化设备通信。

现在参考图2,示出了由云计算环境50(图1)提供的一组功能抽象层。应当预先理解,图2中示出的组件、层以及功能旨在仅是说明性的,并且本发明的实施例不限于此。如所描绘的,提供以下层和对应功能:

硬件和软件层60包括硬件和软件组件。硬件组件的示例包括:主机61;基于RISC(精简指令集计算机)架构的服务器62;服务器63;刀片服务器64;存储设备65;以及网络和联网组件66。在一些实施例中,软件组件包括网络应用服务器软件67和数据库软件68。

虚拟化层70提供抽象层,从该抽象层可以提供虚拟实体的以下示例:虚拟服务器71;虚拟存储装置72;虚拟网络73,包括虚拟专用网络;虚拟应用和操作系统74;以及虚拟客户端75。

在一个示例中,管理层80可以提供以下描述的功能。资源供应81提供计算资源和用于在云计算环境内执行任务的其他资源的动态采购。计量和定价82在云计算环境内利用资源时提供成本跟踪,并为这些资源的消费开账单或发票。在一个示例中,这些资源可以包括应用软件许可证。安全性为云消费者和任务提供身份验证,以及为数据和其他资源提供保护。用户门户83为消费者和系统管理员提供对云计算环境的访问。服务水平管理84提供云计算资源分配和管理,使得满足所需的服务水平。服务水平协议(SLA)规划和履行85提供云计算资源的预安排和采购,根据该SLA预期该云计算资源的未来要求。

工作负载层90提供了可以利用云计算环境的功能的示例。可以从该层提供的工作负载和功能的示例包括:绘图和导航91;软件开发和生命周期管理92;虚拟教室教育传递93;数据分析处理94;交易处理95;以及针对数据库管理系统的批量工作负载的优化资源要求估计的协调。。

本发明可以是处于任何可能的技术细节集成水平的系统、方法和/或计算机程序产品。计算机程序产品可以包括其上具有计算机可读程序指令的计算机可读存储介质(或多个介质),这些计算机可读程序指令用于使处理器执行本发明的各方面。

计算机可读存储介质可以是能够保留和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质可以是例如但不限于电子存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或前述的任何合适的组合。计算机可读存储介质的更具体示例的非穷举列表包括以下项:便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式光盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、诸如上面记录有指令的打孔卡或凹槽中的凸起结构的机械编码装置,以及上述的任何适当组合。如本文所使用的计算机可读存储介质不应被解释为暂时性信号本身,诸如无线电波或其他自由传播的电磁波、通过波导或其他传输介质传播的电磁波(例如,通过光纤线缆的光脉冲)、或通过导线传输的电信号。

本文描述的计算机可读程序指令可以从计算机可读存储介质下载到相应的计算/处理设备,或者经由网络(例如因特网、局域网、广域网和/或无线网络)下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光传输光纤、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或网络接口从网络接收计算机可读程序指令,并转发计算机可读程序指令以存储在相应计算/处理设备内的计算机可读存储介质中。

用于执行本发明的操作的计算机可读程序指令可以是汇编指令、指令集架构(ISA)指令、机器相关指令、微代码、固件指令、状态设置数据、集成电路的配置数据,或者以一种或多种编程语言(包括面向对象的编程语言,例如Smalltalk、C++等)和过程编程语言(例如“C”编程语言或类似的编程语言)的任何组合编写的源代码或目标代码。计算机可读程序指令可以完全在用户的计算机上执行,部分在用户的计算机上执行,作为独立的软件包执行,部分在用户的计算机上并且部分在远程计算机上执行,或者完全在远程计算机或服务器上执行。在后一种情况下,远程计算机可以通过任何类型的网络(包括局域网(LAN)或广域网(WAN))连接到用户的计算机,或者可以连接到外部计算机(例如,使用因特网服务提供商通过因特网)。在一些实施例中,为了执行本发明的各方面,包括例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA)的电子电路可以通过利用计算机可读程序指令的状态信息来执行计算机可读程序指令以使电子电路个性化。

在此参考根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述本发明的各方面。将理解,流程图和/或框图的每个框以及流程图和/或框图中的框的组合可以由计算机可读程序指令来实现。

这些计算机可读程序指令可以被提供给计算机或其他可编程数据处理装置的处理器以产生机器,使得经由计算机或其他可编程数据处理装置的处理器执行的指令创建用于实现流程图和/或框图的一个或多个框中指定的功能/动作的装置。这些计算机可读程序指令还可以存储在计算机可读存储介质中,其可以引导计算机、可编程数据处理装置和/或其他设备以特定方式工作,使得其中存储有指令的计算机可读存储介质包括制品,该制品包括实现流程图和/或框图的一个或多个框中指定的功能/动作的各方面的指令。

计算机可读程序指令还可以被加载到计算机、其他可编程数据处理装置或其他设备上,以使得在计算机、其他可编程装置或其他设备上执行一系列操作布置,以产生计算机实现的过程,使得在计算机、其他可编程装置或其他设备上执行的指令实现流程图和/或框图的一个或多个框中指定的功能/动作。

附图中的流程图和框图示出了根据本发明的各种实施例的系统、方法和计算机程序产品的可能实现的架构、功能和操作。在这点上,流程图或框图中的每个框可以表示指令的模块、段或部分,其包括用于实现指定的逻辑功能的一个或多个可执行指令。在一些替代实施方案中,框中所注明的功能可不按图中所注明的次序发生。例如,连续示出的两个框实际上可以作为一个步骤完成,同时执行,基本上同时执行,以部分或完全临时重叠的方式执行,或者这些框有时可以以相反的顺序执行,这取决于所涉及的功能。还将注意,框图和/或流程图图示的每个框以及框图和/或流程图图示中的框的组合可以由执行指定功能或动作或执行专用硬件和计算机指令的组合的专用的基于硬件的系统来实现。

图3示出了根据本发明的实施例的可以被用于实现用于数据库管理系统的自学习箱式资源优化的方法的计算机系统和计算机程序代码的结构。图3涉及对象301-315。

在图3中,计算机系统301包括通过一个或多个I/O接口309耦接到一个或多个硬件数据存储设备311以及一个或多个I/O设备313和315的处理器303。

硬件数据存储设备311可以包括但不限于磁带驱动器、固定或可移动硬盘、光盘、配备存储器的移动设备以及固态随机存取或只读存储设备。I/O设备可以包括但不限于:输入设备313,诸如键盘、扫描仪、手持电信设备、触敏显示器、平板电脑、生物测定读取器、操纵杆、跟踪球或计算机鼠标;以及输出设备315,其可以包括但不限于打印机、绘图仪、平板电脑、移动电话、显示器或发声设备。数据存储设备311、输入设备313和输出设备315可以位于本地或远程位置,它们从这些位置通过网络接口连接到I/O接口309。

处理器303还可以连接到一个或多个存储设备305,其可以包括但不限于动态RAM(DRAM)、静态RAM(SRAM)、可编程只读存储器(PROM)、现场可编程门阵列(FPGA)、安全数字存储卡、SIM卡或其它类型的存储器设备。

至少一个存储设备305包含存储的计算机程序代码307,其是包括计算机可执行指令的计算机程序。所存储的计算机程序代码包括实现根据本发明的实施例的用于数据库管理系统的自学习箱式资源优化的方法的程序,并且可以实现本说明书中描述的其他实施例,包括图1-7中所示的方法。数据存储设备311可以存储计算机程序代码307。存储在存储设备311中的计算机程序代码307被配置为由处理器303经由存储设备305来执行。处理器303执行所存储的计算机程序代码307。

在一些实施例中,不是从硬盘驱动器、光盘或其它可写、可重写或可移动的硬件数据存储设备311存储和访问,而是所存储的计算机程序代码307可以被存储在静态、不可移动的只读存储介质上,例如只读存储器(ROM)设备305,或者可以由处理器303直接从这样的静态、不可移动的只读介质305访问。类似地,在一些实施例中,所存储的计算机程序代码307可以被存储为计算机可读固件,或者可以由处理器303直接从这样的固件而不是从诸如硬盘驱动器或光盘的更动态的或可移除的硬件数据存储设备311访问。

因此,本发明公开了一种用于支持计算机基础设施、将计算机可读代码集成、托管、维护和部署到计算机系统301中的过程,其中,与计算机系统301结合的代码能够执行用于数据库管理系统的自学习箱式资源优化的方法。

本发明的任何组件可以由提供促进用于数据库管理系统的自学习箱式资源优化的方法的服务提供商来创建、集成、托管、维护、部署、管理、服务、支持等。因此,本发明公开了一种用于部署或集成计算基础设施的过程,包括将计算机可读代码集成到计算机系统301中,其中,与计算机系统301结合的代码能够执行用于数据库管理系统的自学习箱式资源优化的方法。

一个或多个数据存储设备311(或图3中未示出的一个或多个附加存储设备)可以用作计算机可读硬件存储设备,该计算机可读硬件存储设备中具有计算机可读程序和/或具有存储在其中的其他数据,其中,计算机可读程序包括所存储的计算机程序代码307。通常,计算机系统301的计算机程序产品(或者替代地,制品)可以包括计算机可读硬件存储设备。

在包括联网计算基础设施、云计算环境、客户端-服务器架构或其他类型的分布式平台的组件的实施例中,本发明的功能可以仅在客户端或用户设备上实现,可以仅在远程服务器上实现或实现为云计算平台的服务,或者可以在本地组件和远程组件之间拆分。

虽然可以理解,用于DBMS的自学习箱式资源优化的方法的程序代码307可以通过将程序代码307加载到计算机可读存储介质(例如,计算机数据存储设备311)中而经由将程序代码307直接手动加载到客户机、服务器和代理计算机(未示出)中来部署,但是程序代码307也可以通过将程序代码307发送到中央服务器(例如,计算机系统301)或一组中央服务器而自动或半自动地被部署到计算机系统301中。程序代码307然后可被下载到将执行程序代码307的客户端计算机(未示出)中。

替代地,程序代码307可以经由电子邮件被直接发送到客户端计算机。然后,程序代码307可以被分离到客户计算机上的目录,或者通过选择将程序代码307分离到目录中的程序的电子邮件选项而被加载到客户端计算机上的目录中。

另一替代方案是将程序代码307直接发送到在客户端计算机硬盘驱动器上的目录。如果配置了代理服务器,则该过程选择代理服务器代码,确定将代理服务器的代码放置在哪些计算机上,发送代理服务器代码,然后将代理服务器代码安装在代理计算机上。程序代码307然后被发送到代理服务器并被存储在代理服务器上。

在一个实施例中,通过提供用于DBMS的自学习箱式资源优化的方法的程序代码307与软件应用(未示出)、操作系统(未示出)和网络操作系统软件(未示出)共存,然后在程序代码307将工作的环境中的客户机和服务器上安装程序代码307,程序代码307被集成到客户机、服务器和网络环境中。

上述对程序代码307中包括的代码的集成的第一步是标识客户机和服务器上的任何软件,包括网络操作系统(未示出),在该软件中将部署程序代码307所需的或与程序代码307协同工作的程序代码307。该标识的软件包括网络操作系统,其中网络操作系统包括通过添加联网特征来增强基本操作系统的软件。接下来,标识软件应用和版本号,并将它们与已被测试与程序代码307一起工作的软件应用和正确版本号的列表进行比较。丢失或不匹配正确版本号的软件应用被升级到正确的版本。

检查将参数从程序代码307传递到软件应用的程序指令,以确保指令的参数列表与程序代码307所需的参数列表相匹配。相反,检查由软件应用传递到程序代码307的参数以确保该参数与程序代码307所需的参数相匹配。标识包括网络操作系统的客户机和服务器操作系统,并将其与已被测试为与程序代码307一起工作的操作系统、版本号和网络软件程序的列表进行比较。与所测试的操作系统和版本号的列表中的条目不匹配的操作系统、版本号或网络软件程序被升级到客户计算机上的所列级别,并被升级到服务器计算机上的所列级别。

在确保其中要部署程序代码307的软件处于已被测试为与程序代码307一起工作的正确版本级别之后,通过在客户机和服务器上安装程序代码307来完成集成。

本发明的实施例可以被实现为由计算机系统的处理器执行的方法、计算机程序产品、计算机系统或者用于支持计算机基础设施的处理器执行的过程或服务。

图4示出了根据本发明的实施例的DBMS的自学习工作负载管理组件和相关组件的体系结构。图4示出了项目410-470和4000-4001。

在图4的实施例中,DBMS 4000的自学习工作负载管理组件410由机器学习训练子系统4001训练,以通过将传入数据访问请求组织和提供为批量工作负载来更准确地预测这些请求的资源要求。

该图示出了DBMS 4000的组件的子集:

-改进的工作负载管理器410,依赖于由本发明的实施例训练的机器学习模型460,预测被提交给DBMS 4000的生产工作负载的资源要求。在一些实施例中,独特的机器学习模型460将被用于预测对所有可能类型或类别的资源中的一个(或另一个适当子集)的要求。在这种情况下,通过重复图4-5的方法,独立地训练每个模型460,以预测生产工作负载对特定模型的一个或多个关联资源的要求,并且通过聚合由每个模型460识别的要求来导出生产工作负载的总资源要求;

-查询优化器420,如本领域所公知的,生成用于传入SQL查询和其他类型的数据访问请求的执行计划;

-资源预测流水线430将由训练系统4001训练的资源要求估计模型460所包括的资源预测规则、概念、推断和其它训练和人工智能知识传输到工作负载管理器410;以及

-查询执行引擎440,如本领域所公知的,管理DBMS对由工作负载管理器410组装的生产DBMS工作负载的每个语句的执行。

机器学习训练系统4001采用人工智能、认知计算或机器学习的方法来训练预测所提交的DBMS工作负载的资源要求的自学习模型460。训练系统4001包括以下组件:

-机器学习训练流水线450,其从DBMS 4000接收查询日志形式的原始训练数据,查询日志标识服务于先前提交给DBMS的数据访问请求所需的资源的类型和数量;

-机器学习模型460,其由训练系统4001训练以预测已被批处理成工作负载的传入DBMS语句的资源要求;以及

-推断流水线470,其连接执行各种预处理步骤、字典生成和一般建模操作(如随后的附图中所描述的)的组件,并将所得到的人工智能推断、概念和规则从机器学习模型460传输到生产DBMS 4000。

一些实施例可以包括与图4的架构稍微不同的架构,其将特定组件的功能划分成多个组件,或者将两个或更多组件的功能组合成单个组件。例如,训练系统4001在一些实现中可以是DBMS 4000的内部组件,或者DBMS 4000和训练系统4001两者可以是单个更大系统的组件。

如将在随后的附图中更详细地讨论的,本发明的实施例可以被部署在图4的平台上以执行遵循一般过程的步骤:

i)在训练阶段,资源要求估计模型460被训练以估计由DBMS 4000处理的各种工作负载的资源要求。在该阶段期间,训练系统4001首先接收原始训练数据集合,诸如先前提交给DBMS 4000或类似的DBMS的数据访问请求或其它类型的生产工作负载的日志。在一些实施例中,通过训练流水线450从DBMS 4000接收该数据。原始训练数据还描述了DBMS 4000为每个记录的请求服务所需的资源的类型和数量。

ii)训练系统4001处理训练数据以生成训练语料库,该训练语料库被格式化为符合机器学习应用所使用的已知标准或惯例。在一些实施例中,这样的语料库被格式化为已知要在机器学习训练领域中使用的三重存储数据结构类别。这样的语料库将由训练系统接收和生成的知识表示为机器学习领域中已知的数据结构类型,作为一种表示训练知识的方式。训练系统4001然后使用机器学习语料库来训练资源要求估计模型460,以预测批量工作负载的资源要求。

iii)训练模型460所包括的人工智能知识的规则、推断、概念、关系和其它组件经过训练系统4001的推断流水线470和资源预测流水线430到达DBMS 4000的工作负载管理器410组件。在一些实施例中,整个模型被传递到DBMS 4000。

iv)改进的工作负载管理器410,使用从训练系统4001接收的最新知识或模型,并且响应于由查询优化器420生成的执行计划,估计从被提交给DBMS 4000的数据访问请求组装的生产工作负载的资源要求。工作负载管理器410然后使用该知识来确保生产工作负载不要求分配比DBMS 4000当前可用的资源更多的资源,并且还帮助确保DBMS以最佳方式利用可用资源。两种类型的改进都有助于最大化DBMS的吞吐量和性能。

图5是示出根据本发明的实施例的用于训练自学习DBMS工作负载管理器以执行箱式资源优化以及然后使用该训练的结果来优化对生产环境中的资源要求的估计的方法的高级流程图。图5包含步骤500-590,它们在后续图中更详细地描述,并且它们能够由与图1-4中所示的实施例类似的实施例执行。

在步骤500中,训练系统4001接收训练数据集,该训练数据集包括SQL DBMS查询或其它类型的数据访问请求的日志。取决于实施方式,每个请求可以是单个语句或者可以包括多个语句。在一些实施例中,该数据集由生产DBMS 4000的组件生成为例如查询日志。除了包括过去的数据访问请求的实际文本或其他表示之外,该数据集还标识DBMS 4000为了服务于每个请求而消耗的资源的类型和数量。

在步骤510中,训练系统4001预处理所接收的训练数据集的每个语句。在图6中更详细描述的这种预处理包括降低本发明的后续步骤的复杂度的正规化和标准化操作。

在步骤520中,训练系统4001对预处理后的训练语句执行高级特征工程任务。在图6中更详细描述的这些任务产生从训练语句解析的关键字的字典,标识由DBMS优化器模块420针对每个语句生成的查询执行计划所指定的高级编译时特征,以及生成查询向量集合,每个查询向量表示用于对应训练语句的该信息。

在步骤530中,训练系统4001将查询向量组织成“模板”群集。每个模板包括已经被认为具有超过预先定义的相似度阈值的相似度的查询向量子集。实施者可以选择任何已知的相似度量化机制(例如已知的聚类算法)以确定哪些查询向量具有足以被分配给同一个模板的相似度。在图6中更详细地描述了该步骤,在特定实施例中,每个查询向量被分配给一个且仅一个模板。

许多聚类和相似度确定过程在本领域中是已知的,并且取决于实现者的偏好和技术约束,实施例可以采用从已知机制中选择的特定过程,如k均值聚类或DBSCAN算法。本发明足够灵活以适应任何聚类方法,或本领域中已知的用于量化n维向量之间的相似度的任何其它方法。

在一个示例中,特定的已知聚类算法被用于确定向量的子集是否足够相似以被分配给同一个模板。在此,该确定包括将每个n元素向量绘制为n维空间中的点,并测量该n维位置与模板的质心(或算术平均)值之间的距离。然后,可以根据该距离的大小来导出该向量与其它向量的相似度。在该示例中,与小于预先确定的阈值的距离相关联的所有向量将被认为足够相似以被分配到同一个模板中。

在步骤530结束时,训练系统4001将已经生成查询向量的模板,以使得包含在每个模板中的查询向量表示共享类似高级特征的训练查询或语句子集。在一些实施例中,训练系统4001可以生成额外的模板,该额外的模板被保留用于不与先前生成的模板中的任一个相对应的生产工作负载。

在步骤540中,训练系统4001生成直方图集合,每个直方图描述训练查询的特定工作负载中的向量分布。在图6中更详细地描述了该过程。

该“分箱(binning)”过程通过将训练查询(或数据访问语句)随机地划分成相等大小的子集来开始。每个子集表示可以被提交给DBMS 4000的DBMS查询或其他类型的数据访问请求的随机“训练工作负载”。因为每个训练查询仅由一个模板表示,但是每个模板可以表示多个训练查询,所以每个训练工作负载与每个模板的相应数量的实例相关联。训练工作负载可能与特定模板的零个实例相关联。

每个直方图包括一组独特的箱(bins),并且每个箱唯一地与在步骤530中生成的模板之一相关联。被存储在特定直方图的特定箱中的值标识该特定箱的关联模板的与构成该特定直方图的对应工作负载的任何查询相关联的实例的数量。

在一个示例中,系统4001在步骤530中生成五个模板:T1、T2、T3、T4和T5。因此,在步骤540中生成的每个直方图将具有五个箱,每个模板一个箱。如果在步骤540中选择的训练工作负载包括分别与模板T1、T5和T1相关联的三个查询,则该工作负载的直方图的五个箱将各自标识工作负载的与模板之一相关联的查询的数量。在这种情况下,直方图的五个箱将被填充以值:T1=2,T2=0,T3=0,T4=0,以及T5=1。

因为已知每个训练查询已经消耗了特定数量的资源,所以每个直方图还与它自己的资源要求集合相关联。在特定实施例中,直方图的资源要求被导出为与该直方图相关联的训练工作负载的每个查询的要求的总和。在一些实施例中,每个直方图或模板与仅一种类型的资源的要求相关联,从而导致特定工作负载的资源要求与单资源训练直方图集合相关联。

在步骤550中,训练系统4001将由训练工作负载、直方图、资源要求以及查询向量中的至少一些表示的信息格式化成形式上结构化的机器学习语料库。该语料库不仅仅是纯粹的非结构化或任意结构化数据主体。相反,该语料库包含以与在人工智能领域(诸如专家系统和机器学习)中使用的已知知识库数据结构相一致的方式格式化的人工智能知识。在代表性实施例中,该知识被格式化为适合于提交给深度学习神经网络的向量输入集合,或者被格式化为将专家资源要求估计知识在数学上表示为规则、概念和关系的集合的三重存储。训练系统4001然后通过采用已知的机器学习方法,使用机器学习语料库来训练机器学习模型460,以将特定的资源要求集合与由直方图之一表示的每个工作负载相关联。

在其它实施例中,训练系统4000将附加的智能应用于在步骤500-550中开发的数据结构和知识,以推断不与特定训练工作负载直接相关的附加直方图的关联资源要求。例如,如果模型标识了由查询向量、特定类型的资源要求或与训练工作负载相关联的特定向量分布所表示的特定高级特性之间的模式和关系,则可以智能地导出这些附加直方图。所得到的附加直方图可以与从训练工作负载中所标识的模式或关系中推导或推断的资源要求相关联,即使附加直方图未精确地表示特定的训练工作负载。

步骤560-590描述了本发明的阶段或实施例,其中生产DBMS 4000应用通过步骤500-550的训练过程结合到机器学习模型460中的知识和经验。该应用包括以下步骤:将传入生产数据访问请求批处理成生产工作负载,然后通过将每个生产工作负载的高级特征的分布与在训练过程期间学习的工作负载资源要求的知识相关联,估计每个生产工作负载的资源要求。在随后的附图中描述了步骤560-590的进一步细节。

在步骤560中,DBMS 4000在生产环境中操作时从用户或从其它计算机化系统接收数据访问请求集合。DBMS 4000可能已经在服务于其它请求。取决于实施方式细节,数据访问请求可以包括本领域已知的任何种类的请求,例如SQL格式的数据库查询。

在步骤570中,DBMS 4000处理所接收的请求集合的全部或一部分,以生成每个处理的请求的查询向量。以与步骤510和520的方式类似的方式执行该处理。

DBMS 4000可以使用实现者优选的任何已知方法来确定处理哪些请求。例如,如果每当满足特定条件时执行步骤570,则DBMS 4000可以处理自先前满足该条件以来已经被接收但尚未被处理的所有查询。该条件可以由人类管理员、管理者或程序员设置,或者可以通过任何已知的自动化手段来设置并在以后调整。这些条件的实例包括:检测到自最后执行步骤570以来已经经过了特定持续时间;一天中的某个时间或一周中的某天的出现;检测到未处理的已排队查询的数量已经低于阈值,或者所接收到的未排队查询的数量超过阈值;以及检测到特定资源组合的可用数量已经超过阈值。

在其他实施例中,DBMS 4000可以对预定数量的查询执行步骤570,根据提交或接收查询的时间顺序来选择处理哪些查询。在其它实施例中,更复杂的选择机制使用其它因素的组合,诸如每个查询的特性、提交每个查询的每个用户或系统的特性、或每个查询所访问的特定数据存储的特性,来确定在步骤570中选择多少个查询以及哪些查询以用于处理。

在步骤570结束时,DBMS 4000将已经针对从先前接收的传入生产数据访问请求子集中选择的每个数据访问请求生成查询向量。

在步骤580中,DBMS 4000通过将每个处理后的查询或其它类型的数据访问请求一次一个地添加到DBMS 4000的现有工作负载,来生成最佳生产工作负载。如同在步骤570中用于选择处理哪些传入数据访问请求的方法一样,可以通过实施者优选的任何方式来选择处理后的请求被添加到工作负载的顺序。在一些实施例中,该顺序是提交或接收传入请求的时间顺序。

当添加每个查询时,DBMS 4000使用通过在训练阶段期间构建机器学习模型460而获得的知识和经验来构造表示模板在当前工作负载中的查询之间的分布的直方图。DBMS4000然后根据与新标识的直方图相关联的资源来估计工作负载的资源要求。

DBMS 4000重复该迭代过程,直到工作负载需要比可用资源更大量的资源。然后从工作负载中移除最近添加的语句。然后,将所得到的工作负载视为DBMS 4000在不需要不可用资源的情况下可以服务的最大工作负载。

在步骤590中,DBMS 4000将所选择的工作负载添加到查询执行队列,其中每个数据访问请求由访问数据库的数据和索引的DBMS组件来服务。在一些实施方式中,这些操作由DBMS 4000的查询执行引擎440组件来管理。

在一些实施例中,处理所选择的工作负载的结果通过训练流水线450被返回到训练系统4001。这些结果可以包括诸如以下信息:所选择的工作负载的内部组成,与工作负载相关联的直方图,与工作负载的每个访问请求相关联的查询向量,或者直方图所指定的资源要求与服务所选择的工作负载所需的实际资源数量的比较。

图6是示出根据本发明的实施例的用于利用自学习箱式资源优化来训练DBMS系统的步骤的流程图。图6包含步骤600-680,其提供了图5的步骤500-540的细节。

在步骤600中,DBMS训练系统4001开始预处理在图5的步骤500中接收的训练查询(或其它类型的训练数据访问语句)。这些预处理步骤的一个目标是强制每个训练语句符合一组通用惯例或标准。这种符合性减少了每个语句的将被表示为查询向量的元素的唯一特性的数量。因为实施例的复杂度随着查询向量的大小而增大,所以减小向量元素的数量提高了实施例的效率并降低了实施例的维护要求。

在资源预测模型460是深度神经网络的实施例中尤其如此,其中直方图及其相关联的聚合资源要求或由实施例导出的其它数据结构作为输入被提交给深度神经网络。因为深度神经网络的大小随着网络的向量输入中的元素数量而迅速增大,所以较小的输入向量能够显著地降低模型复杂度。

在一些实施例中,第一正规化步骤是确保所有语句文本具有共同的大小写,诸如大写或小写文本。当查询语言不要求语句是大小写敏感的时,该步骤允许训练系统4001避免其中例如等效别名“COL008”和“col008”被不正确地假设为不同标记的错误。

在步骤610中,训练系统4001用记号(marker)替换训练语句中的谓词常量,以便从随后步骤中的进一步分析中移除常量。该步骤进一步降低了分析的复杂度,因为常量的确切值对处理语句所需的资源的数量或类型几乎没有影响。例如,用记号替换从句“CustomerAge<21”中的常量“21”防止了该常量的确切值被错误地标识为能够改变执行该从句所需的资源的数量或类型的标记元素。

在步骤620,训练系统4001通过从每个语句中移除不影响执行该语句所需的资源的数量或类型的其它标签,继续预处理训练语句。这些其它标签包括模式引用和表别名。

例如,因为执行查询“SELECT*FROM CustomerTable C1WHERE CI.MyColumn>100”所需的资源的数量或类型与执行查询“SELECT*FROM CustomerTable C2 WHEREC2.MyColumn>100”所需的资源的数量或类型几乎没有差别,所以训练系统4001在确定这些语句的资源要求时不试图区分表别名“C1”和“C2”。

在步骤630中,以与已知的DBMS前端使用的标记化步骤相类似的方式对在步骤600-620中预处理的训练语句进行标记化。该标记化包括提取句法关键词(诸如SQL谓词“JOIN”)和语义关键词(诸如文字表名)并移除诸如SQL关键词“FROM”和“AND”等停止词的步骤。如前所述,关键字被标识,因为关键字标识了消耗大量资源的操作,但是停止词被丢弃,因为停止词不引起资源利用。

在步骤630结束时,训练系统4001将已经累积在训练语句已被标准化之后从这些语句中提取的标记列表。这种标准化可以通过从语句中移除不显著影响资源要求的元素来减少所提取的标记的数量,并且解决能够导致错误识别不必要的附加标记的歧义和冗余。

在步骤640中,训练系统4001构建数据字典,该数据字典列出了在步骤630中从训练语句中提取的每个独特标记的出现次数。

在步骤650中,训练系统4001从数据字典中删除至少最少次数未出现的任何标记。通过将每个标记的出现次数与预定的最小阈值进行比较来执行该确定。该阈值可以通过实施者优选的任何方法来识别,包括基于各种阈值水平如何影响图5的方法的执行的经验观察的已知方法,或者通过已知DBMS用于在正常操作期间生成数据字典的任何方法。

在步骤660中,训练系统4001在处理训练语句时,审阅由查询优化器420(或提供类似功能的模块)生成的执行计划。在一些实施例中,这些执行计划被包括在步骤500中接收的训练数据集中。在其他实施例中,DBMS 4000的模块或训练系统4001通过与DBMS查询优化器420执行的那些方法类似的已知方法来生成执行计划。所得到的执行计划以及生成计划以便指示DBMS如何最有效地处理数据访问请求的详细步骤在数据库管理领域是已知的。

训练系统4001在该步骤中继续,接下来从每个训练语句的执行计划中提取编译时特征。这些高级特征(如在步骤630中从训练语句中提取的标记)在本领域中已知能够在包括这些特征的语句的执行期间引起大量的资源消耗。

如本领域中已知的,这种高级编译时特征的示例包括当执行查询时要被执行的操作和估计的度量,诸如表扫描或排序操作和基数估计(例如,估计数据库表的行的数量,该数据库表的行必须被遍历以便执行诸如搜索表或将表的列与另一列连接之类的操作)。

可由各种类型的实施例标识为显著影响语句的资源要求的高级特征的其他示例包括:

-DBMS可用的分类堆的最大大小,

-SQL查询中的聚合运算符(诸如MAX()、AVG()和COUNT())的数量,

-包括SQL DISTINCT关键字的SQL查询中的聚合运算符的数量,

-在可以执行操作之前或之后必须被扫描的表中的行数,以及

-被配置为将并发语句的执行多线程化的DBMS可用的线程的数量。

在步骤670中,训练系统4001的经训练的聚类模型组装每个语句的查询向量。每个查询向量的每个元素唯一地对应于在步骤610-650中标识的高级特征之一,例如从训练语句中解析的独特标记或由DBMS查询优化器组件生成的查询执行计划所引用的编译时操作或度量。与特定数据访问语句相关联的查询向量的每个元素将特定数据访问语句与对应于该元素的高级特征的值相关联。

在步骤670结束时,每个训练语句将已经与标识表征该语句的高级特征(例如,标记和编译时特征)的对应查询向量相关联。该向量不标识与对应训练语句相关联的低级特征。多于一个训练语句可以与相同的模板相关联,但是没有语句可以与多于一个模板相关联。

在步骤680中,训练系统4001的聚类模型将查询向量组织成称为模板的群集,将训练数据集划分成工作负载子集,以及将每个工作负载与直方图相关联,该直方图标识查询向量在该工作负载的训练语句中的分布。

在该步骤中,如先前在图5的步骤540中所描述的,训练系统4001根据实现者所期望的任何标准将训练数据集划分成训练工作负载。在本文档中描述的特定实施例和示例中,训练数据集的语句或查询被随机地分配到各自包含相同数量的语句或查询的工作负载中(除了包含不适合任何完整工作负载的语句或查询的可能剩余工作负载之外)。

每个训练工作负载中的语句或查询的数量也可以通过本领域已知的或实施者优选的任何手段来选择。例如,在一些实施例中,选择训练工作负载的大小以优化图6的方法的性能,其中已经根据经验确定工作负载的总数或每个工作负载中的查询的数量以提供最佳性能。

训练系统4001的经训练的模型460然后用对应的直方图表征每个工作负载。直方图的每个箱标识对应工作负载中的与特定模板相关联的查询或语句的数量。因为多于一个查询或语句可以与同一个模板相关联,所以每个箱可以包含零或正值。每个直方图还与通过将在直方图的相应工作负载的每个训练语句或查询最初由DBMS 4000执行时由这些语句或查询实际消耗的资源量相加而导出的资源要求集合相关联。

如图5中步骤550所描述的,通过使用所得到的直方图、查询向量和资源消耗记录来训练人工智能模型460(诸如深度神经网络、深度学习神经网络或另一类型的机器学习模型或专家系统)以预测特定类型的工作负载的资源要求,图6的方法结束。

图7是示出根据本发明的实施例的具有自学习箱式资源优化的DBMS系统的步骤的流程图。图6包含步骤600-680,其提供了图5的步骤500-540的细节。图7包含步骤700-780,其提供了图5的步骤570-590的细节。

图7示出了DBMS 4000的改进的工作负载管理器组件410如何使用如图6的方法和图5的步骤500-550所训练的机器学习模型460来估计执行生产查询或其它类型的数据访问请求所需的资源。该方法包括以下步骤:

-将传入生产查询划分成“生产工作负载”子集,

-将每个生产工作负载与匹配的直方图相关联,其中匹配的直方图以与通过图5和6的方法导出的训练直方图的方式类似的方式被构造,并且然后

-使用由模型460在训练阶段期间获得的知识以根据匹配的直方图的特性来推断每个生产工作负载的资源要求。

在图5的步骤560之后立即执行的步骤700中,DBMS 4000开始处理在步骤560中接收的一组传入生产查询(或数据访问语句)。该处理过程类似于图5的步骤510-520以及图6的步骤610-670,如训练系统4001对训练数据集所执行的。在步骤700结束时,DBMS 400将已经针对在步骤560中接收的生产查询或语句的至少一个子集生成生产查询向量。

在步骤710中,DBMS 400将在步骤700中生成的每个生产查询向量与模板相关联,该模板在形式和功能上类似于在图5-6的训练阶段期间由训练系统4001导出的模板。这种关联可以由在训练阶段开发和训练的聚类模型执行,例如基于k均值聚类算法的模型。

在一些实施例中,该过程包括选择包含与在步骤700中导出的每个生产查询向量相匹配的向量的模板的直接步骤。如果任何一个生成向量不能与模板相匹配,则一些实施例可以使用相似度量化算法来导出标识最接近匹配向量或标识与生成向量的相似度低于预定容许水平的向量的模板。其它实施例可以简单地将没有匹配模板的生成向量分配给预留的“捕获全部”模板,如在图5的步骤530完成时生成的模板。

在步骤720中,DBMS 4000组装包含在步骤700-720中处理的生产查询的子集的初始生产工作负载。如果DBMS 4000尚未完成执行所有先前排队的查询,则如果实现者优选的话,该初始工作负载可以包括当前在执行队列中的一个或多个未决查询或语句,作为生产查询的子集的补充或替代。在一些实施例中,如果DBMS 4000当前没有正在执行任何生产查询,则初始工作负载被设置为从在步骤700-720中处理的生产查询中选择的单个查询(或语句,取决于实施方式细节)。

在步骤730中,DBMS 4000导出标识与初始工作负载相关联的模板的分布的直方图。该步骤由与图5的步骤540中的训练系统4001所使用的过程类似的过程来执行,以生成每个训练工作负载的训练直方图。

步骤740开始步骤740-770的迭代过程。重复该过程,直到确定用于生产工作负载的当前候选需要超过DBMS 4000当前可用的资源的资源。

在步骤750中,工作负载管理器410(或DBMS 4000的另一个功能组件)确定当前工作负载是否需要超过DBMS 4000当前可用的资源的资源。通过将与最近选择或导出的直方图相关联的资源要求与DBMS 4000当前可用的资源类型和数量进行比较来做出该确定。

如果系统确定当前工作负载不需要超过可用资源的资源,则图7的方法继续步骤770,步骤770将下一个生产查询或语句添加到当前工作负载。如前所述,该下一个查询或语句可以通过实现者期望的任何手段来选择,诸如通过根据DBMS 4000提交或接收生产查询或语句的时间顺序来选择。

DBMS 4000重复前面的步骤以将该更新后的工作负载与直方图相关联,该直方图表示与该更新后的工作负载所包含的生产语句相关联的模板的分布。在将每个模板和直方图仅与单个类型的资源相关联或仅与适当的资源类型子集相关联的实施例中,在该步骤中的更新后的工作负载将与一组直方图相关联,该组直方图总体上表示与执行更新后的工作负载所需的所有类型的聚合资源相关联的模板的分布。新导出的一个或多个直方图由模型460基于先前训练导出,以便将更新后的工作负载与特定的一组资源要求相关联,在步骤750的下一次迭代期间,该特定的一组资源要求将被与当前可用于DBMS 4000的资源的数量和类型进行比较。

步骤740-770的迭代过程然后重复,并且该处理继续,直到生产工作负载需要比DBMS 4000当前可用的资源更多的资源为止。此时,条件步骤750将系统引导到步骤760,在步骤760,从当前工作负载中移除最近添加的生产语句或查询。然后,最终的生产工作负载被选择为仅具有可用资源的DBMS 4000所能够执行的最大工作负载。然后,步骤740-770的迭代过程结束,图7的方法继续到步骤780。

在步骤780中,DBMS 4000执行在步骤760中导出的最终的生产工作负载。这种执行可以通过数据库管理领域中已知的手段来执行。然而,在特定实施例中,通过消除检查最终的生产工作负载所需的资源的可用性的步骤,能够改进该执行过程。这些步骤可以由实现者自行决定消除,因为已知本发明已经确保了将仅需要可用的资源来执行所有查询、数据访问请求或包含在工作负载中的其它类型的语句。

如果在步骤700-710中处理的任何生产语句尚未被执行,则图7的步骤720-780以从剩余语句中选择的下一个生产工作负载来重复。如这些步骤的先前执行一样,DBMS 4000生成下一个候选者初始生产工作负载,将候选者与一个或多个新导出的直方图相关联(直方图由经训练的模型460导出以在形式和功能上类似于由图5-6的方法生成的直方图),并继续向工作负载添加语句,直到工作负载需要的资源超过DBMS 4000可用的资源为止。

出于说明的目的,已经给出了在本文档中描述的本发明的示例和实施例。它们不应被解释为是穷举的,也不应将本发明的实施例限制为在此描述的示例和实施例。不脱离这些示例和实施例的范围的本发明的许多其它修改和变化对于本领域技术人员来说是显而易见的。选择在本文档中使用的术语以最好地解释这些示例和实施例的基本原理,以便说明本发明相对于已知技术和产品的实际应用和技术改进,并且使本领域技术人员能够更好地理解在此公开的示例和实施例。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号