数据库服务器异常成因检测方法、装置、设备和存储介质与流程

文档序号:26278286发布日期:2021-08-13 19:34阅读:116来源:国知局
数据库服务器异常成因检测方法、装置、设备和存储介质与流程

本发明涉及云数据库领域,尤其涉及一种数据库服务器异常成因检测方法、装置、设备和存储介质。



背景技术:

随着互联网的发展,用户的多种行为可以从线下转移到线上,也即是为用户提供多种在线服务,比如在线购物、在线教育等等。同时,随着通信技术、计算机技术的发展,物联网也落地应用到各个领域,比如智能物流、智能家居等领域中,从而为用户提供各种智能化服务。在提供上述各服务的过程中,都需要使用到数据库服务器,并且数据库服务器的运行状态会直接影响服务质量,进一步影响用户的使用体验。

当数据库服务器的运行状态出现异常时,往往需要准确检测此异常产生的原因并进行优化,以尽快恢复数据库服务器的运行状态。因此,如何准确检测出异常产生的原因就成为一个亟待解决的问题。



技术实现要素:

有鉴于此,本发明实施例提供一种数据库服务器异常成因检测方法、装置、设备和存储介质,用以保证异常成因检测的准确性。

第一方面,本发明实施例提供一种数据库服务器异常成因检测方法,包括:

响应于数据库服务器异常运行指标的产生,获取预设时间段内,对应于不同数据库请求的第一操作语句;

根据所述第一操作语句中相同执行指标之间的差异,对所述第一操作语句进行聚类,以得到对应于不同服务请求的第二操作语句,一个服务请求对应于至少一个数据库请求;

根据与所述异常运行指标对应的目标执行指标,从所述第二操作语句中确定引起所述异常运行指标产生的异常操作语句。

第二方面,本发明实施例提供一种数据库服务器异常成因检测装置,包括:

获取模块,用于响应于数据库服务器异常运行指标的产生,获取预设时间段内,对应于不同数据库请求的第一操作语句;

聚类模块,用于根据所述第一操作语句中相同执行指标之间的差异,对所述第一操作语句进行聚类,以得到对应于不同服务请求的第二操作语句,一个服务请求对应于至少一个数据库请求;

语句确定模块,用于根据与所述异常运行指标对应的目标执行指标,从所述第二操作语句中确定引起所述异常运行指标产生的异常操作语句。

第三方面,本发明实施例提供一种电子设备,包括处理器和存储器,所述存储器用于存储一条或多条计算机指令,其中,所述一条或多条计算机指令被所述处理器执行时实现上述第一方面中的数据库服务器异常成因检测方法。该电子设备还可以包括通信接口,用于与其他设备或通信网络通信。

第四方面,本发明实施例提供了一种非暂时性机器可读存储介质,所述非暂时性机器可读存储介质上存储有可执行代码,当所述可执行代码被电子设备的处理器执行时,使所述处理器至少可以实现如第一方面所述的数据库服务器异常成因检测方法。

本发明实施例提供的数据库异常成因检测方法,当数据库服务器在运行过程出现运行指标异常时,数据库服务器可以响应于此异常运行指标,获取在预设时间段内数据库执行的第一操作语句,此第一操作语句是数据库请求层级的操作语句,执行此操作能够实现对数据库中数据进行增加、删除等处理。之后,数据库服务器会进一步对第一操作语句进行聚类,以得到服务请求层级的第二操作语句。其中,一个服务请求对应于至少一个数据库请求,即响应一个服务请求需要执行至少一个数据库请求层级的操作语句。最后,数据库服务器根据与异常运行指标对应的目标执行指标,从第二操作语句中确定异常操作语句,此异常操作语句是引起异常运行指标产生的、服务请求层级的操作语句。

可见,上述方法中数据库服务器是直接对服务请求层级的第二操作语句进行分析,以确定出引起运行指标异常的异常操作语句,也即是实现了从服务请求层级上对数据库服务器异常成因的检测,保证异常成因检测的准确性。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例提供的一种数据库服务器异常成因检测方法的流程图;

图2为本发明实施例提供的另一种数据库异服务器常成因检测方法的流程图;

图3为预测模型输出的一种相关关系图的示意图;

图4为本发明实施例提供的一种异常操作语句确定方式的流程图;

图5为本发明实施例提供的另一种异常操作语句确定方式的流程图;

图6为预测模型输出的另一种相关关系图的示意图;

图7为本发明实施例提供的一种数据库异服务器常成因检测装置的结构示意图;

图8为与图7所示实施例提供的数据库异服务器常成因检测装置对应的电子设备的结构示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

在本发明实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本发明。在本发明实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义,“多种”一般包含至少两种,但是不排除包含至少一种的情况。

应当理解,本文中使用的术语“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。

取决于语境,如在此所使用的词语“如果”、“若”可以被解释成为“在……时”或“当……时”或“响应于确定”或“响应于识别”。类似地,取决于语境,短语“如果确定”或“如果识别(陈述的条件或事件)”可以被解释成为“当确定时”或“响应于确定”或“当识别(陈述的条件或事件)时”或“响应于识别(陈述的条件或事件)”。

还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的商品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种商品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的商品或者系统中还存在另外的相同要素。

下面结合附图对本发明的一些实施方式作详细说明。在各实施例之间不冲突的情况下,下述的实施例及实施例中的特征可以相互组合。另外,下述各方法实施例中的步骤时序仅为一种举例,而非严格限定。

图1为本发明实施例提供的一种数据库服务器异常成因检测方法的流程图。本发明实施例提供的该数据库服务器异常成因检测方法可以由数据库服务器来执行。可以理解的是,该数据库服务器可以实现为软件、或者软件和硬件的组合。需要说明的有,为了描述简洁,本实施例以及后续各实施例中均将数据库服务器简称为服务器。

如图1所示,该数据库服务器异常成因检测方法具体可以包括如下步骤:

s101,响应于数据库服务器异常运行指标的产生,获取预设时间段内,对应于不同数据库请求的第一操作语句。

用户可以借助终端设备向服务器发送服务请求。其中,服务请求与使用场景相适应,比如在网购场景中,服务请求可以是商品页面的访问请求或者支付请求等等。服务器在接收服务请求后,会生成为响应此服务请求所要执行的至少一个数据库请求,也即是通过服务器预设的应用程序接口(applicationprogramminginterface,简称api)对数据库发起至少一个类型的数据库请求。

其中,服务器生成的数据库请求可以包括至少一种类型,根据对数据库中的数据进行的处理不同,数据库请求可以包括对数据库中数据的增加请求、删除请求、修改请求、查询请求等类型。在实际中,服务器为响应一个服务请求所生成的每个类型的数据库请求具体又可以包括至少一条数据库的操作语句,其可以称为第一操作语句,服务器通过执行第一操作语句可以实现对数据库中数据的增删改查。

可选地,第一操作语句的具体表现形式可以与数据库的类型相适应。当数据库是关系型数据库时,第一操作语句可以为由结构化查询语言(structuredquerylanguage,简称sql)编写的结构化查询语句(即sql语句)。当数据库是非关系型数据库时,第一操作语句也可以由适用于此种数据库类型的语言进行编写,本发明各实施例并不对编写操作语句的语言进行限定。

基于上述描述,服务器响应服务请求的过程可以举例描述为:终端设备向服务器发送针对某一商品的页面访问请求后,服务器响应于此页面访问请求,会生成至少一条用于查询关系型数据库中数据的sql语句,并通过执行此sql语句查询到的该商品对应的页面数据。服务器通过将查询到的页面数据反馈给终端设备,从而完成了对页面访问请求的响应。

在上述描述的基础上,多个终端设备均可以向服务器发送服务请求,则服务器需要执行每个服务请求对应的至少一条第一操作语句。而在执行众多第一操作语句的过程中,服务器还可以实时监测自身的运行指标。其中,运行指标包括:cpu的使用率、内存使用率、不同类型的数据库请求各自的数量、以及不同类型的数据库请求之间的比例等等。

当监测到异常运行指标时,服务器会进一步获取在预设时间段内执行的、数据库请求层级的第一操作语句,并通过执行下述步骤来进一步确定引起运行指标异常的异常操作语句。对于预设时间段,比如可以将一天按小时划分为多个时间段,则异常运行指标产生的时刻所属的时间段即为上述的预设的时间段。

s102,根据第一操作语句中相同执行指标之间的差异,对第一操作语句进行聚类,以得到对应于不同服务请求的第二操作语句,一个服务请求对应于至少一个数据库请求。

然后,根据多条数据库请求层级的第一操作语句中相同执行指标之间的差异,对第一操作语句进行聚类,以得到服务请求层级的操作语句,即第二操作语句。其中,聚类得到的第二操作语句可以认为是服务器响应一服务请求所要执行的至少一条第一操作语句。且第二操作语句与第一操作语句可以包括相同的执行指标,执行指标可以包括操作语句的执行时长、执行次数和扫描次数等。

举例说明上述聚类过程:假设数据库为关系型数据库,则操作语句即为sql语句。在服务器检测到自身的某一运行指标异常后,可以获取在预设时间段内执行的多条第一操作语句:sql语句1和sql语句2。其中,sql语句1的执行时长为a1、执行次数为b1、扫描次数为c1;sql语句2的执行时长为a2、执行次数为b2、扫描次数为c2。

若sql语句1和sql语句2中同一项执行指标之间的差异小于预设阈值,表明这两条语句对应于同一服务请求,也即是服务器要执行这两条sql语句才能实现对终端设备发送的服务请求的响应,则这两条语句会聚成一类,以生成一条服务请求层级的第二操作语句即sql语句3,且sql语句3的执行时长为a1+a2、执行次数为b1+b2、扫描次数为c2+c2。

而上述聚类过程中并未限定多条第一操作语句中的同一执行指标到底是执行时长、执行次数和扫描次数中的哪一种或几种。则一种具体常用的可选方式,若sql语句1和sql语句2的执行次数之间的差异小于预设阈值,表明二者对应于同一服务请求,则对二者进行聚类,以生成sql语句3。

另一种更为严格的可选方式,若sql语句1和sql语句2的执行时长之间的差异、执行次数和扫描次数之间的差异均小于预设阈值,确定二者对应于同一服务请求,则进行聚类。

在上述方式中,相比于sql语句1和sql语句2的执行时长之间的差异、以及扫描次数之间的差异,多条sql语句的执行次数之间的差异更为重要,因此,可选地,在聚类时可以优先考虑执行次数之间的差异。

s103,根据与异常运行指标对应的目标执行指标,从第二操作语句中确定引起异常运行指标产生的异常操作语句。

最后,可以根据服务器的运行指标与操作语句的执行指标之间的预设对应关系,得到目标执行指标。其中,预设对应关系可以根据经验建立,该预设对应关系用以反映操作语句的执行指标对服务器的运行指标的影响程度。此时,可以按照目标执行指标的高低对服务请求层级的第二操作语句进行排序,并确定目标执行指标最高的至少一个第二操作语句为异常操作语句,也正是由于执行这些异常操作语句才导致服务器的运行指标出现异常。

可选地,运行指标中cpu使用率或者内存使用率与执行指标中的扫描次数可以建立对应关系。运行指标中的某一类型的操作语句的数量可以与执行指标中的执行时长建立对应关系。

本实施例中,服务器响应于异常运行指标,获取在预设时间段内数据库执行的、数据库请求层级的第一操作语句。之后,服务器会对第一操作语句进行聚类,以得到服务请求层级的第二操作语句。最后,根据与异常运行指标对应的目标执行指标,从服务请求层级的第二操作语句中确定引起异常运行指标产生的异常操作语句。可见,上述方法中服务器是直接对服务请求层级的第二操作语句进行分析,从而实现引起指标异常的异常操作语句的定位,也即是实现了从服务请求层级上对数据库异常成因的检测。

需要说明的有,在实际中,服务器出现异常运行指标通常是在多条第一操作语句的共同作用下才形成的,若单独分析每条第一操作语句的执行指标,不仅效率低下,而且也不一定能够准确定位出导致运行指标异常的异常操作语句。而上述实施例中得到的第二操作语句恰好是对多条第一操作语句进行聚类处理的结果,因此,第二操作语句能够体现出执行多条第一操作语句后对服务器的运行指标的综合影响,从而能够准确检测出异常操作语句。

为便于理解,可以对图1所示实施例提供的数据库服务器异常成因检测方法的具体实现过程进行示例性说明:

服务器在响应不同终端设备发送的服务请求的过程中会执行大量的数据库请求,即执行大量的操作语句。对于关系型数据库来说,此操作语句即为sql语句。并且在执行操作语句的过程中,服务器还可以实时监测自身的运行指标。

当服务器在10:00监测到自身的cpu使用率高于预设阈值时,可以获取9:00~10:00这一预设时间段内执行的sql语句(即上述实施例中的第一操作语句),其中,执行每条sql语句能够对数据库中的数据进行增删改查等任一种处理。之后,服务器会对9:00~10:00这一时段的sql语句即sql语句1~sql语句5进行聚类处理。

其中,sql语句1的执行时长为10ms,执行次数为100次,扫描次数为50次。sql语句2的执行时长为8ms,执行次数为100次,扫描次数为45次。

sql语句3的执行时长为5ms,执行次数为200次,扫描次数为100次。

sql语句4的执行时长为10ms,执行次数为50次,扫描次数为40次。

sql语句5的执行时长为9ms,执行次数为50次,扫描次数为50次。

通过比较sql语句1~sql语句5各自的执行时长之间的差异、执行次数之间的差异以及扫描次数之间的差异进行聚类。并且可选地,在聚类时,可以优先考虑执行次数之间的差异。

由于sql语句1和sql语句2具有相同的执行次数,并且二者的执行时长之间的差异,扫描次数之间的差异也都小于预设阈值。因此,可以对sql语句1和sql语句2进行聚类,以生成sql语句a,其的执行时长是18ms,执行次数为200次,扫描次数为95次。sql语句1和sql语句2中相同执行指标之间的差异较小,因此,二者可以认为是服务器为响应为同一服务请求所要执行的sql语句。类似的,也可以对sql语句4和sql语句5进行聚类,以生成sql语句b,其的执行时长是19ms,执行次数为100次,扫描次数为90次。其中,sql语句a和sql语句b是服务请求层级的操作语句。sql语句3单独成类。

经过上述聚类可以得到服务器为响应不同服务器请求所需执行的sql语句a、sql语句b和sql语句3(即上述实施例中的第二操作语句)。根据预设对应关系可知,与cup使用率对应的执行指标为扫描次数,因此,服务器可以按照扫描次数对3条服务请求层级的sql语句进行排序,并将具有最高扫描次数的sql语句a确定为异常sql语句(即上述实施例中的异常操作语句),也即是实现了从服务请求层级的sql语句中确定引起cup使用率过高的异常sql语句。

可选地,服务器在定位出异常操作语句后,还可以响应于用户在服务器提供的操作界面上触发的显示操作,将异常操作语句也即是将sql语句a显示出来。

在实际中,服务器的各运行指标都会被不同的服务请求层级的操作语句所影响。可选地,对于服务器的任一运行指标,均可以按照上述方式对影响此任一运行指标的、服务请求层级的操作语句进行排序,并响应用户的触发操作对排序结果进行展示。

在上述实施例中,通过对数据库请求层级的第一操作语句进行聚类可以得到服务请求层级的第二操作语句。其中,第二操作语句的数量大大小于第一操作语句。并且有些情况下,第一操作语句和第二操作语句之间甚至具有指数倍的差异。这种数量级的减小便于服务器对服务请求层级的第二操作语句进行实时监测,降低操作语句监测成本的同时,也可以间接实现了对大规模第一操作语句的间接实时监测。

可选地,当服务器监测到对应于某种服务请求的第二操作语句的数量较多时,还可以对此第二操作语句进行限流,以避免服务器的处理资源过多地被此第二操作语句占用,导致对应于其他服务请求的第二操作语句无法及时执行。可选地,可以通过设置缓存队列的方式对第二操作语句进行限流,以保证对应于其他服务请求的第二操作语句执行的及时性。

可选地,服务器也可以定期获取预设时间段内的第一操作语句,并通过对获取到的第一操作语句进行聚类以得到服务请求层级的第二操作语句。之后,服务器还可得到在不同时段内,对应于不同服务请求的第二操作语句的数量,并根据第二操作语句的数量动态配置服务器的处理资源,使数据库服务器的处理资源能够弹性伸缩,保证终端设备发送的服务请求均可以及时被响应。

图2为本发明实施例提供的另一种数据库服务器异常成因检测方法的流程图。如图2所示,该方法可以包括如下步骤:

s201,响应于数据库服务器的异常运行指标的产生,获取预设时间段内,对应于不同数据库请求的第一操作语句。

上述步骤201的执行过程可以参见如图1所示实施例中的相关描述,在此不赘述。

s202,根据第一操作语句的请求类型标识,对第一操作语句进行分类。

服务器可以根据第一操作语句具有的请求类型标识,对其进行分类。对于第一操作语句的类型可以进行如下理解:

根据上述实施例可知,执行一条第一操作语句相当于完成对数据库的一次请求。在实际中,数据库的请求可以包括对数据库中数据的增删改查等多种请求。则按照数据处理的不同方式,数据库请求可以分为多种请求类型,相应的,第一操作语句也可以分为多种类型。举例来说,第一操作语句具体可以分为新增语句、删除语句、修改语句、查询语句等。并且第一操作语句的类型具体可以通过请求类型标识体现。

承接上述举例中提及的多种请求类型,通过分类也即是将第一操作语句中全部的新增语句划分为一类,全部的删除语句划分为一类,以此类推。并且通常来说,每个分类中包含至少一条第一操作语句。

s203,对属于目标请求类型的至少一条第一操作语句的执行指标进行计算,以生成属于目标请求类型的一条第三操作语句,目标请求类型为不同请求类型中的任一种。

经过分类处理后,服务器还可以对属于目标请求类型的至少一个第一操作语句中相同的执行指标进行计算,并根据计算结果得到第三操作语句的执行指标,也即是将属于目标请求类型的第一操作语句整合成一条第三操作语句。其中,目标请求类型是全部请求类型中的任一种,比如是增删改查中的任一种。

举例说明第一操作语句的整合过程:假设数据库为关系型数据库,且存在两条同为删除请求类型的sql删除语句1以及sql删除语句2,这两条语句的执行指标包括执行时长、执行次数以及扫描次数。则可以将两语句的执行时长之和确定为第三操作语句的执行时长,执行次数和扫描时间也进行相同的求和计算,从而实现将两条sql删除语句整合成一条sql删除语句3,即第三操作语句。

对分类结果中每个请求类型包含的至少一条第一操作都进行上述操作,便可得到每个请求类型对应的一条第三操作语句,并且整合前的第一操作语句和整合后的第三操作语句属于相同的请求类型,则每条第三操作语句都可以认为是模板层级的操作语句,即模板语句。另外,经过整合处理后得到的第三操作语句的数量与对第一操作语句进行分类得到的类型数量相等,此数量大大小于第一操作语句的数量。

s204,根据不同请求类型的多条第三操作语句中相同执行指标之间的差异,对多条第三操作语句进行聚类,以得到对应于不同服务请求的第二操作语句,一个服务请求对应于至少一个数据库请求。

之后,服务器还可以根据多条第三操作语句中相同执行指标之间的差异,对多条第三操作语句进行聚类。可选地,多条第三操作语句中相同执行指标之间的差异可以直接表现为相同执行指标之间的差值。举例来说,第三操作语句1和第三操作语句2,若二者的执行时长之间的差值、执行次数之间差值以及扫描次数之间的差值都小于预设阈值,则将这两条第三操作语句进行聚类。

可选地,在聚类过程中,第三操作语句的执行次数之间的差值可以优先考虑,聚类过程还可以参见如图1所示实施例中的相关描述,在此不再赘述。

s205,根据与异常运行指标对应的目标执行指标,从第二操作语句中确定引起异常运行指标产生的异常操作语句。

上述步骤205的执行过程可以参见如图1所示实施例中的相关描述,在此不赘述。

本实施例中,当服务器的运行指标出现异常时,服务器可以获取到预设时间段内的多条第一操作语句。之后,先按照第一操作语句各自的请求类型标识,对第一操作语句进行分类,得到模板层级的第三操作语句。再对模板层级的第三操作语句进行聚类,以得到服务请求层级的第二操作语句。通过上述过程的两次分类,可以将数据库请求层级的操作语句划分为更高层级操作语句,即服务请求层级的操作语句。之后,可以从服务请求层级对操作语句的监测,提高异常操作语句检测的准确性。同时,对模板层级的操作语句进行聚类得到服务请求层级的操作语句的方式,能够提高操作语句的聚类效率,降低聚类过程占用服务器处理资源的比例。

另外,本实施例中未详细描述的内容以及所能实现的技术效果可以参见图1所示实施例中的相关描述,在此不再赘述。

图2所示的实施例中已经提及了多条第三操作语句中相同执行指标之间的差异可以具体表现为多条第三操作语句中相同执行指标之间的差值。除此之外,此差异还可以具体表现为多条第三操作语句中相同执行指标之间的相关度。此时,可选地,可以采用以下方式进行聚类:

根据图2所示实施例可知,一条第三操作语句是对至少一条第一操作语句整合后得到的,则可以根据生成第三操作语句的至少一条第一操作语句中,同一执行指标生成针对于该执行指标的数据矩阵。第三操作语句的执行指标可以包括执行时长、执行次数和扫描次数,则对于一条第三操作语句来说,每项执行指标都有一个对应的数据矩阵。

举例来说,将同为查询语句的第一操作语句1和第一操作语句2整合后可以得到依旧是查询语句的第三操作语句。其中,第一操作语句1和第一操作语句2的执行时长分别为a1、a2,执行次数分别为b1、b2,扫描次数分别为c1、c2,第三操作语句的执行时长为a1+a2,执行次数为b1+b2,扫描次数为c1+c2,则此第三操作语句针对执行时长的数据矩阵可以为由a1,a2和t1,t2构成的二维矩阵,其中,t1、t2分别为执行第一操作语句1和第一操作语句2的时间。第三操作语句针对执行次数和扫描次数的数据矩阵也可以相应得到,在此不再赘述。

在得到每条第三操作语句针对各项执行指标的数据矩阵后,对于执行时长这一执行指标,还可以分别计算多条第三操作语句各自针对执行时长这一执行指标的数据矩阵之间的相关度。对于其他的执行指标,也可以按照上述方式计算相关度。可选地,若任意两条第三操作语句的各项执行指标之间的相关度均小于预设阈值,则确定此两条第三操作语句相关。其中,在聚类过程中,两条第三操作语句的执行次数之间的相关度越高,其越应该被聚成一类。

可选地,上述过程中判断相关度时使用的预设阈值也可以通过监督学习的方式进行不断修正,从而保证聚类的准确性。

按照上述方式可以得到每条第三操作语句针对不同执行指标的数据矩阵,可选地,根据生成一条第三操作语句所整合的至少一条第一操作语句的各自的执行指标,还可以生成第三操作语句对应的指标曲线图,也即是将上述方式中的数据矩阵替换为曲线图的形式。之后,将多条第三操作语句各自的指标曲线图输入预先训练完成的预测模型,以由预测模型输出多条第三操作语句之间的相关关系图,并根据相关关系图对第三操作语句进行聚类。其中,相关关系图可以如图3所示,图中用实线相连的第三操作语句之间可以被聚类。此种方式也即是将图像分析应用到数据库场景中。并且可选地,预测模型可以是基于卷积神经网络的各种模型。

上述描述分别给出了根据数据矩阵之间的相关度进行聚类的过程,以及借助预测网络以及指标曲线图对操作语句进行聚类的过程。在实际中,为了保证聚类的准确性,可选地,还可以同时对两种方式得到的聚类结果进行综合考虑,以得到最终的聚类结果。

在上述各实施例的基础上,已经能够得到服务请求层级的第二操作语句,之后便可以根据服务请求层级的语句进行异常操作语句的检测。可选地,为了进一步提高异常操作语句检测的准确性,则上述实施例中的步骤104或者步骤205的具体执行过程可以如图4所示,包括以下步骤:

s301,根据目标执行指标,从第二操作语句中确定引起异常运行指标产生的备选操作语句。

服务器可以根据服务器的运行指标和操作语句的执行指标之间的预设对应关系确定目标执行指标,之后,按照目标执行指标的高低,对服务请求层级的第二操作语句进行排序,并将目标执行指标的数值最高的n个第二操作语句确定为备选操作语句,其中n≥1,n为预设值。

s302,获取异常运行指标在预设时间段内的指标曲线图。

s303,根据异常运行指标的指标曲线图与备选操作语句的指标曲线图之间的相似度,从备选操作语句中确定异常操作语句。

然后,在运行过程中,服务器可以定时或不定时地采集自身在不同时刻下的各项运行指标。当服务器在某一时刻出现某一运行指标异常时,则根据服务器在预设时间段内采集到的针对此异常运行指标的数据生成针对此异常运行指标的指标曲线图。

同时,服务器还可以生成备选操作语句在预设时间段内的指标曲线图。上述实施例中已经描述了如何利用至少一个第一操作语句生成第三操作语句的指标曲线图,则类似的,也可以利用至少一个第三操作语句生成第二操作语句的指标曲线图,具体过程在此不再赘述。

最后,通过比对异常运行指标的指标曲线图和备选操作语句的指标曲线图之间的相似度,从而确定出异常操作语句。可选地,曲线之间相似度的确定方式可以采用计算曲线间的欧式距离、模式距离、形状距离等方式实现。

其中,每条备选操作语句包括多个执行指标,且每个执行指标都有对应的一条指标曲线图,则可选地,可以将其分别与异常运行指标对应的指标曲线图进行相似度计算,并综合确定出异常操作语句。可选地,还可以将备选操作语句的多条指标曲线图融合成一张指标曲线图,再进一步计算融合结果和异常运行指标的指标曲线图之间的相似度,并确定异常操作语句。

由于操作语句具有的各项执行指标比如执行次数、执行时长等等,也会反映到服务器的运行指标上,比如,执行次数越多,执行时长越长,则执行该操作语句越会导致cpu的使用率升高,也即是服务器运行指标的变化趋势与操作语句执行指标的变化趋势也有一定的相关性。因此,在本实施例中,在确定出备选操作语句后,还可以将二者之间的相关度考虑进来,从而进一步保证异常操作语句定位的准确性。

可选地,为了进一步提高异常操作语句检测的准确性,则上述实施例中的步骤104或者步骤205的具体执行过程可以如图5所示,包括以下步骤:

s401,根据目标执行指标,从第二操作语句中确定引起异常运行指标产生的备选操作语句。

上述步骤401的执行过程可以参见如图4所示实施例中的相关描述,在此不赘述。并且此时获取到的每个备选操作语句都是一条第二操作语句,之后,与生成第三操作语句的指标曲线图类似的,也可以生成每条备选操作语句最新的指标曲线图。

s402,获取备选操作语句的历史指标曲线图。

s403,根据历史指标曲线图与备选操作语句的指标曲线图之间的相似度,从备选操作语句中确定异常操作语句。

上述各实施例中是当服务器出现异常运行指标时才会对第一操作语句进行聚类,从而得到服务请求层级的第二操作语句,并且在确定异常操作语句的过程中还使用到了第二操作语句(包含备选操作语句)的指标曲线图。

但在实际中,服务器也可以实时对第一操作语句进行聚类,并实时地生成并存储每个第二操作语句各自的指标曲线图。此时,服务器便可得到各第二操作语句在一天中的不同时段对应的指标曲线图,也即是历史指标曲线图。

当服务器在今天的某一时刻出现运行指标异常时,可以先确定此时刻所属的目标时间段,之后再从服务器存储的历史指标曲线图中找到昨天或之前几天服务器在此目标时间段中各备选操作语句的历史指标曲线图。

若备选操作语句的历史指标曲线图和备选操作语句最新的指标曲线图之间的相似度高于或等于预设阈值,则表明服务器每天在此目标时段都会出现运行指标异常,但这种异常时由于服务器每天在此目标时段都有固定的任务要执行,服务器此时段内产生的异常运行指标是可以忽略的,也即是上述确定出的备选操作语句实际上正常操作语句。

若备选操作语句的历史指标曲线图和备选操作语句最新的指标曲线图之间的相似度小于预设阈值,表明服务器出现的运行指标异常是突发性的,此时可以直接将备选操作语句确定为异常操作语句。

本实施例中,在根据预设对应关系选择出服务请求层级的备选操作语句之后,还可以将备选操作语句最新的指标曲线图和历史指标曲线图进行比较,从而确定服务器的运行指标异常是否是突发状况,并进一步对引起突发运行指标异常的异常操作语句进行定位,保证定位的准确性。

可选地,在实际中,上述图4或图5所示的方式也可以同时使用,以从不同的角度提高异常操作语句定位的准确性。

为便于理解,可以对图2~图5所示实施例提供的数据库服务器异常成因检测方法的具体实现过程进行示例性说明:

服务器在响应不同终端设备发送的服务请求的过程中会执行大量的数据库请求,即执行大量的操作语句。对于关系型数据库来说,此操作语句即为sql语句。并且在执行操作语句的过程中,服务器还可以实时监测自身的运行指标。

当服务器在10:00监测到自身的cpu使用率过高时,可以获取9:00~10:00这一预设时间段内执行的sql语句(即上述实施例中的第一操作语句),其中,每条sql语句能够对数据库中的数据进行增删改查等任一种处理。之后,服务器可以根据请求类型标识对9:00~10:00这一时段的sql语句进行分类,以得到4个模板层级的sql语句即sql语句1~sql语句4(也即是上述实施例中的第三操作语句)。之后,可以再对sql语句1~sql语句4进行聚类处理。

其中,sql语句1为查询语句,其的执行时长为10ms,执行次数为100次,扫描次数为50次。sql语句1由2条查询sql语句整合而成,这2条查询sql语句的执行时长分别为4ms和6ms,执行次数均为50次,扫描次数分别为60次和40次。

sql语句2为删除语句,其的执行时长为8ms,执行次数为100次,扫描次数为45次。并且sql语句2可以由3条删除sql语句整合而成。

sql语句3为修改语句,其的执行时长为5ms,执行次数为200次,扫描次数为50次。并且sql语句3可以由5条修改sql语句整合而成。

sql语句4为新增语句,其的执行时长为10ms,执行次数为50次,扫描次数为40次。并且sql新增语句2可以由3条sql语句整合而成。

一种可选地方式,可以根据生成sql语句1的2条查询语句得到sql语句1的不同执行指标各自的数据矩阵,类似的,也可以得到其他sql语句2~sql语句4的数据矩阵。之后通过计算数据矩阵之间的相关度,可以将sql语句1和sql语句2进行聚类,以生成sql语句a,其的执行时长是18ms,执行次数为200次,扫描次数为95次。sql语句1和sql语句2可以认为是服务器为响应为同一服务请求所要执行的sql语句。通过计算还可以对sql语句3和sql语句4独立属于一类。

另一种可选地方式,可以根据生成sql语句1的2条查询语句得到sql语句1的不同执行指标各自的指标曲线图,类似的,也可以得到其他sql语句2~sql语句4的指标曲线图,并将指标曲线图输入预测模型,以由预测模型输出sql语句1~sql语句4之间的相关关系图。服务器根据相关关系图实现对sql语句的聚类。如图6所示,预测模型输出的聚类结果与上述利用数据矩阵进行聚类得到的结果是相同的。

经过上述聚类可以得到服务器为响应不同服务器请求所需执行的sql语句a、sql语句3和sql语句4(即上述实施例中的第二操作语句)。根据预设对应关系可知,与cup使用率对应的执行指标为扫描次数,因此,服务器可以按照扫描次数对3条服务请求层级的sql语句进行排序,并将具有最高扫描次数的sql语句a和sql语句3确定为备选sql语句。

可选地,服务器可以借助备选sql语句的历史指标曲线图和/或异常运行指标在9:00~10:00这一时间段内的直播曲线图,从备选sql语句中确定引起cpu使用率过高的sql语句(即上述实施例中的异常sql语句),也即是实现了从服务请求层级的sql语句中确定引起cup使用率过高的异常sql语句。此部分的具体过程可以参见图4或图5所示实施例中的相关描述,在此不再赘述。

以下将详细描述本发明的一个或多个实施例的数据库服务器异常成因检测装置。本领域技术人员可以理解,这些数据库服务器异常成因检测装置均可使用市售的硬件组件通过本方案所教导的步骤进行配置来构成。

图7为本发明实施例提供的一种数据库服务器异常成因检测装置的结构示意图,如图7所示,该装置包括:

获取模块11,用于响应于数据库服务器异常运行指标的产生,获取预设时间段内,对应于不同数据库请求的第一操作语句。

聚类模块12,用于根据所述第一操作语句中相同执行指标之间的差异,对所述第一操作语句进行聚类,以得到对应于不同服务请求的第二操作语句,一个服务请求对应于至少一个数据库请求。

语句确定模块13,用于根据与所述异常运行指标对应的目标执行指标,从所述第二操作语句中确定引起所述异常运行指标产生的异常操作语句。

可选地,所述装置还包括:分类模块14和计算模块15。

所述分类模块14,用于根据所述第一操作语句的请求类型标识,对所述第一操作语句进行分类。

所述计算模块15,用于对属于目标请求类型的至少一条第一操作语句的执行指标进行计算,以生成属于所述目标请求类型的一条第三操作语句,所述目标请求类型为不同请求类型中的任一种。

所述聚类模块12,用于根据不同请求类型的多条第三操作语句中相同执行指标之间的差异,对所述多条第三操作语句进行聚类,以得到所述第二操作语句。

可选地,所述聚类模块12具体用于:根据生成所述多条第三操作语句的第一操作语句各自的执行指标,计算所述多条第三操作语句之间的相关度;

根据所述相关度,对所述多条第三操作语句进行聚类。

可选地,所述聚类模块12具体用于:根据生成所述多条第三操作语句的第一操作语句各自的执行指标,确定所述多条第三操作语句各自的指标曲线图;

将所述多条第三操作语句各自的指标曲线图输入预测模型,以由所述预测模型输出所述多条第三操作语句之间的相关关系图;

根据所述相关关系图,对所述多条第三操作语句进行聚类。

可选地,所述语句确定模块13包括第一确定单元131和第二确定单元132。

所述第一确定单元131,用于根据数据库服务器的运行指标与操作语句的执行指标之间的预设对应关系,确定与所述异常运行指标对应的目标执行指标。

所述第二确定单元132,用于根据所述目标执行指标,从所述第二操作语句中确定引起所述异常运行指标产生的异常操作语句。

可选地,所述第二确定单元132具体用于:根据所述目标执行指标,从所述第二操作语句中确定引起所述异常运行指标产生的备选操作语句;

获取所述异常运行指标在所述预设时间段内的指标曲线图;

根据所述异常运行指标的指标曲线图与所述备选操作语句的指标曲线图之间的相似度,从所述备选操作语句中确定所述异常操作语句。

可选地,所述第二确定单元132具体用于:根据所述目标执行指标,从所述第二操作语句中确定引起所述异常运行指标产生的备选操作语句;

获取所述备选操作语句的历史指标曲线图;

根据所述历史指标曲线图与所述备选操作语句的指标曲线图之间的相似度,从所述备选操作语句中确定所述异常操作语句。

图7所示装置可以执行图1至图5所示实施例的方法,本实施例未详细描述的部分,可参考对图1至图5所示实施例的相关说明。该技术方案的执行过程和技术效果参见图1至图5所示实施例中的描述,在此不再赘述。

以上描述了数据库服务器异常成因检测装置的内部功能和结构,在一个可能的设计中,数据库服务器异常成因检测装置的结构可实现为一电子设备,如图8所示,该电子设备可以包括:处理器21和存储器22。其中,所述存储器22用于存储支持该电子设备执行上述图1至图5所示实施例中提供的数据库服务器异常成因检测方法的程序,所述处理器21被配置为用于执行所述存储器22中存储的程序。

所述程序包括一条或多条计算机指令,其中,所述一条或多条计算机指令被所述处理器21执行时能够实现如下步骤:

响应于数据库服务器异常运行指标的产生,获取预设时间段内,对应于不同数据库请求的第一操作语句;

根据所述第一操作语句中相同执行指标之间的差异,对所述第一操作语句进行聚类,以得到对应于不同服务请求的第二操作语句,一个服务请求对应于至少一个数据库请求;

根据与所述异常运行指标对应的目标执行指标,从所述第二操作语句中确定引起所述异常运行指标产生的异常操作语句。

可选地,所述处理器21还用于执行前述图1至图5所示实施例中的全部或部分步骤。

其中,所述电子设备的结构中还可以包括通信接口23,用于该电子设备与其他设备或通信网络通信。

另外,本发明实施例提供了一种计算机存储介质,用于储存上述电子设备所用的计算机软件指令,其包含用于执行上述图1至图5所示方法实施例中数据库服务器异常成因检测方法所涉及的程序。

最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1