CN107797924A - 一种sql脚本的异常检测方法及其终端 - Google Patents
一种sql脚本的异常检测方法及其终端 Download PDFInfo
- Publication number
- CN107797924A CN107797924A CN201710945396.0A CN201710945396A CN107797924A CN 107797924 A CN107797924 A CN 107797924A CN 201710945396 A CN201710945396 A CN 201710945396A CN 107797924 A CN107797924 A CN 107797924A
- Authority
- CN
- China
- Prior art keywords
- terminal
- sql scripts
- consumption
- sql
- script
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3688—Test management for test execution, e.g. scheduling of test suites
Abstract
本发明适用于数据处理技术领域,提供了一种SQL脚本的异常检测方法及其系统,包括:确定目标SQL脚本对应的脚本调用终端;分别统计各个脚本调用终端调用目标SQL脚本时对应的第二消耗特征值;选取第二消耗特征值最大对应的脚本调用终端,作为目标调用终端;获取目标调用终端在当前的检测周期内调用其他SQL脚本时对应的第二运行状态参数;计算目标调用终端对应的平均调用消耗值;若第二消耗特征值与平均调用消耗值之差大于预设的浮动阈值,则识别目标SQL脚本与目标调用终端不兼容。本发明解决了现有的SQL脚本的异常检测技术,需要管理员对SQL语言进行人工分析,检测效率较低,并且依赖管理员具有较高的技术水平,从而提高了维护的成本的问题。
Description
技术领域
本发明属于数据处理技术领域,尤其涉及一种SQL脚本的异常检测方法及其终端。
背景技术
SQL脚本被广泛应用于网络服务领域,因此SQL脚本运行效率的高低决定着服务请求的反应速率,而同一个SQL脚本可被不同的数据库服务器调用,实现对本地数据库进行自动数据查询的目的。因此,如何对SQL脚本的异常情况进行快速检测,特别地与各个调用SQL脚本的终端之间的兼容性的快速检测,显得尤为重要。而现有的SQL脚本的异常检测技术,需要脚本管理员对SQL语言进行人工分析,检测效率较低,并且依赖脚本管理员具有较高的技术水平,从而提高了维护的成本。
发明内容
有鉴于此,本发明实施例提供了一种SQL脚本的异常检测方法及其终端,以解决现有的SQL脚本的异常检测技术,需要脚本管理员对SQL语言进行人工分析,检测效率较低,并且依赖脚本管理员具有较高的技术水平,从而提高了维护的成本的问题。
本发明实施例的第一方面提供了一种SQL脚本的异常检测方法,所述SQL脚本的异常检测方法包括:
获取待检测系统中各个SQL脚本的第一运行状态参数;
根据各个所述SQL脚本的第一运行状态参数,分别计算各个所述SQL脚本对应的第一消耗特征值,其中,所述第一消耗特征值用于表示所述SQL脚本对设备资源的占用情况;
将各个所述SQL脚本对应的第一消耗特征值按从大到小进行排序,并选取前N个第一消耗特征值对应的SQL脚本,生成脚本消耗异常列表;其中,所述N为小于SQL脚本个数的正整数;
根据接收到的目标脚本选取指令,从所述脚本消耗异常列表中确定目标SQL脚本;
基于SQL脚本执行记录,确定所述目标SQL脚本对应的脚本调用终端;其中,所述脚本调用终端具体为:在当前的检测周期内调用过所述目标SQL脚本的终端;
分别统计各个脚本调用终端调用所述目标SQL脚本时对应的第二消耗特征值,得到关于所述第二消耗特征值与所述脚本调用终端的对应关系列表;
从所述对应关系列表中选取最大的第二消耗特征值对应的脚本调用终端,作为目标调用终端;
获取所述目标调用终端在所述当前的检测周期内调用除所述目标SQL脚本外的其他SQL脚本时对应的第二运行状态参数;
基于所述第二运行状态参数,计算所述目标调用终端对应的平均调用消耗值;
若所述目标调用终端对应的第二消耗特征值与所述平均调用消耗值之差大于预设的浮动阈值,则识别所述目标SQL脚本与所述目标调用终端不兼容。
本发明实施例的第二方面提供了一种终端设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
获取待检测系统中各个SQL脚本的第一运行状态参数;
根据各个所述SQL脚本的第一运行状态参数,分别计算各个所述SQL脚本对应的第一消耗特征值,其中,所述第一消耗特征值用于表示所述SQL脚本对设备资源的占用情况;
将各个所述SQL脚本对应的第一消耗特征值按从大到小进行排序,并选取前N个第一消耗特征值对应的SQL脚本,生成脚本消耗异常列表;其中,所述N为小于SQL脚本个数的正整数;
根据接收到的目标脚本选取指令,从所述脚本消耗异常列表中确定目标SQL脚本;
基于SQL脚本执行记录,确定所述目标SQL脚本对应的脚本调用终端;其中,所述脚本调用终端具体为:在当前的检测周期内调用过所述目标SQL脚本的终端;
分别统计各个脚本调用终端调用所述目标SQL脚本时对应的第二消耗特征值,得到关于所述第二消耗特征值与所述脚本调用终端的对应关系列表;
从所述对应关系列表中选取最大的第二消耗特征值对应的脚本调用终端,作为目标调用终端;
获取所述目标调用终端在所述当前的检测周期内调用除所述目标SQL脚本外的其他SQL脚本时对应的第二运行状态参数;
基于所述第二运行状态参数,计算所述目标调用终端对应的平均调用消耗值;
若所述目标调用终端对应的第二消耗特征值与所述平均调用消耗值之差大于预设的浮动阈值,则识别所述目标SQL脚本与所述目标调用终端不兼容。
本发明实施例的第三方面提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
获取待检测系统中各个SQL脚本的第一运行状态参数;
根据各个所述SQL脚本的第一运行状态参数,分别计算各个所述SQL脚本对应的第一消耗特征值,其中,所述第一消耗特征值用于表示所述SQL脚本对设备资源的占用情况;
将各个所述SQL脚本对应的第一消耗特征值按从大到小进行排序,并选取前N个第一消耗特征值对应的SQL脚本,生成脚本消耗异常列表;其中,所述N为小于SQL脚本个数的正整数;
根据接收到的目标脚本选取指令,从所述脚本消耗异常列表中确定目标SQL脚本;
基于SQL脚本执行记录,确定所述目标SQL脚本对应的脚本调用终端;其中,所述脚本调用终端具体为:在当前的检测周期内调用过所述目标SQL脚本的终端;
分别统计各个脚本调用终端调用所述目标SQL脚本时对应的第二消耗特征值,得到关于所述第二消耗特征值与所述脚本调用终端的对应关系列表;
从所述对应关系列表中选取最大的第二消耗特征值对应的脚本调用终端,作为目标调用终端;
获取所述目标调用终端在所述当前的检测周期内调用除所述目标SQL脚本外的其他SQL脚本时对应的第二运行状态参数;
基于所述第二运行状态参数,计算所述目标调用终端对应的平均调用消耗值;
若所述目标调用终端对应的第二消耗特征值与所述平均调用消耗值之差大于预设的浮动阈值,则识别所述目标SQL脚本与所述目标调用终端不兼容。
实施本发明实施例提供的一种SQL脚本的异常检测方法及其终端具有以下有益效果:
本发明实施例通过获取SQL脚本的运行状态参数,并通过该运行状态参数确定该SQL脚本在预设的时间段内的消耗情况,得到第一消耗特征值,继而终端设备选取消耗最大的N个SQL脚本,进一步确定上述SQL脚本是否存在异常情况,因而终端设备将根据消耗较大的N个SQL脚本生成脚本消耗异常列表,并从脚本异常消耗列表中提取接收到的目标脚本选取指令对应的SQL脚本作为目标SQL脚本,进而获取该目标SQL脚本被不同的脚本调用终端调用时对应的运行状态参数,计算出第二消耗特征值,并生成关于第二消耗特征值与调用终端的对应关系列表,从该对应关系列表中选取第二消耗特征值对应的脚本调用终端,作为目标调用终端,继而获取该目标调用终端调用其他SQL脚本时对应的平均调用消耗值,并确定该目标调用终端与目标SQL脚本是否兼容。与现有的SQL脚本的异常检测技术相比,本发明实施例无需数据库的管理员对SQL脚本的异常情况进行手动排查,终端设备自动生成一个存在异常几率较大的脚本异常消耗列表,缩小了管理员的检测范围,并根据管理员的选择的目标SQL脚本,检测该目标SQL脚本是否与各个脚本调用终端存在版本冲突的情况,从而造成不兼容,无需用户进行异常识别,大大提高了异常检测的准确率以及响应速率。另一方面,由于异常检测的过程主要通过终端设备完成,对于管理员的技术水平要求较低,从而也降低了数据库的维护成本。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本发明第一实施例提供的一种SQL脚本的异常检测方法的实现流程图;
图2是本发明第二实施例提供的一种SQL脚本的异常检测方法的具体实现流程图;
图3是本发明第三实施例提供的一种SQL脚本的异常检测方法S101的具体实现流程图;
图4是本发明第四实施例提供的一种SQL脚本的异常检测方法S102的具体实现流程图;
图5是本发明第五实施例提供的一种SQL脚本的异常检测方法S103的具体实现流程图;
图6是本发明一实施例提供的一种SQL脚本的异常检测终端的结构框图;
图7是本发明一实施例提供的一种终端设备的示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明实施例通过获取SQL脚本的运行状态参数,并通过该运行状态参数确定该SQL脚本在预设的时间段内的消耗情况,得到第一消耗特征值,继而终端设备选取消耗最大的N个SQL脚本,进一步确定上述SQL脚本是否存在异常情况,因而终端设备将根据消耗较大的N个SQL脚本生成脚本消耗异常列表,并从脚本异常消耗列表中提取接收到的目标脚本选取指令对应的SQL脚本作为目标SQL脚本,进而获取该目标SQL脚本被不同的脚本调用终端调用时对应的运行状态参数,计算出第二消耗特征值,并生成关于第二消耗特征值与调用终端的对应关系列表,从该对应关系列表中选取第二消耗特征值对应的脚本调用终端,作为目标调用终端,继而获取该目标调用终端调用其他SQL脚本时对应的平均调用消耗值,并确定该目标调用终端与目标SQL脚本是否兼容,解决了现有的SQL脚本的异常检测技术,需要管理员对SQL语言进行人工分析,检测效率较低,并且依赖管理员具有较高的技术水平,从而提高了维护的成本的问题。
在本发明实施例中,流程的执行主体为SQL脚本的异常检测终端,终端设备包括手机、计算机设备、平板电脑、服务器等终端,特别地,该终端设备具体为一部放于数据库系统中的SQL脚本的检测终端,通过获取各个SQL脚本在数据库中的运行情况,并执行异常检测操作,该数据库系统中,包含多个数据服务器,各个数据库服务器调用SQL脚本资源库中的SQL脚本,完成对应的搜索、数据提取操作。图1示出了本发明第一实施例提供的SQL脚本的异常检测方法的实现流程图,详述如下:
在S101中,获取各个SQL脚本的运行状态参数。
在本实施例中,异常检测的触发条件包括手动触发以及自动触发两种模式。其中,手动触发具体为:管理员在终端设备上生成一个异常检测启动指令,或通过用户终端向终端设备发送一个异常检测启动指令,终端设备若接收到该异常检测启动指令后,则执行S101的相关操作。而自动触发具体为:终端设备设置有异常检测启动时机,若终端设备检测到当前状态与预设的异常检测启动时机匹配,则执行S101的相关操作。
可选地,在本实施例中,所述异常检测启动时机可以为一预设的检测周期,终端设备在监测到当前时刻满足该检测周期,则执行S101的相关操作。所述异常检测启动时机还可以为一运行消耗阈值,例如资源占用率,终端设备在监测到当前时刻待检测终端的运行消耗值大于或等于预设的运行消耗阈值,则执行S101的相关操作。由于设备的消耗过大,一般是由于SQL脚本异常而导致的,因此可通过运行消耗的情况作为触发条件,与周期触发的方式相比,可减少不必要的检测流程,从而提高设备的资源利用率。
在本实施例中,SQL脚本可运行于终端设备的数据库内,该情况下,待检测的终端即为本发明实施例提供的终端设备,即检测本地数据库中各个SQL脚本是否存在异常情况;SQL脚本也可以运行于终端设备外的其他数据库服务器中,在该情况下,终端设备即作为一独立的检测终端,监控该数据库服务器中的SQL脚本是否存在异常情况。特别地,终端设备还可以检测一数据库系统,该数据库系统中包含多个数据库服务器,且各个数据库服务器均从同一个SQL脚本资源库中提取对应的SQL脚本进行查询操作。其中,SQL脚本资源库中存储有多个SQL脚本,用于满足不同用户的查询需求,例如用户需要查询季度奖金相关的数据,则通过调用第一SQL脚本进行查询;用户需要统计车险客户的续保情况,则通过调用第二SQL脚本进行查询。
在本实施例中,终端设备在接收到用户的检测指令或满足对应的检测触发条件时,将分别获取各个SQL脚本的运行状态参数,特别地,该SQL脚本的运行状态参数中包含多个参数项,每个参数项对应一个参数值,分别表征不同的运行特征。其中,该SQL脚本的运作状态参数包括但不限于:运算资源占用参数、平均运行时间参数、内容占用参数以及调用次数。运行资源占用参数具体为调用该SQL脚本时,执行一次查询流程,所需消耗的运算资源,可选地,该运行资源占用参数可用CPU的平均占用个数来表示。
在S102中,根据各个所述SQL脚本的运行状态参数,计算各个所述SQL脚本对应的第一消耗特征值;其中,所述第一消耗特征值用于表示所述SQL脚本对设备资源的占用情况。
在本实施例中,终端设备在获取了各个SQL脚本的运行状态参数后,将根据各个运行状态参数获取SQL脚本的消耗情况,因此将SQL脚本对应的运行状态参数中包含的多个参数值,导入到预设的消耗特征转换模型中,以通过运行状态参数计算其对应的第一消耗特征值,通过该第一消耗特征值表征该SQL脚本的消耗情况。
可选地,在本实施例中,该消耗特征转换模型可以为一哈希函数,终端设备将所述SQL脚本的运作状态参数输入到该哈希函数中,继而根据各个参数值所在的参数范围,得到一个对应的第一消耗特征值。
可选地,在本实施例中,该第一消耗特征值具体为一消耗等级。在该情况下,终端设备除了获取用户当前SQL脚本的运行状态参数外,还获取该SQL脚本的平均运行状态参数,将当前的运行状态参数与平均状态参数进行比对,确定当前的消耗等级。该消耗等级包括但不限于:“远低于平均消耗”、“低于平均消耗”、“维持正常水平”、“高于平均消耗”以及“远高于平均消耗”,终端设备通过显示该消耗等级,可直观获知各个SQL脚本的消耗情况,提高了用户的信息获取效率。
在S103中,将各个所述SQL脚本对应的第一消耗特征值按从大到小进行排序,并选取前N个第一消耗特征值对应的SQL脚本,生成脚本消耗异常列表;其中,所述N为小于SQL脚本个数的正整数。
在本实施例中,终端设备在计算了各个SQL脚本对应的第一消耗特征值后,将根据第一消耗特征值的大小进行排序,其中该第一消耗特征值数值越大,则表示其资源占用越多,消耗越大,而该第一消耗特征值数值越小,则表示其资源占用越小,消耗也较小,特别地,第一消耗特征值较大的SQL脚本其对应的运行时间越长。因此,经过上述排序后,终端设备将得到一个SQL资源消耗序列,并根据预设的N值,从该序列中截取数值最大的N个SQL脚本,即上述的前N个第一消耗特征值对应的SQL脚本,生成脚本消耗异常列表,并通过显示模块进行显示,或直接将该脚本消耗列表发送给数据库管理员对应的用户终端。
在本实施例中,该N的数值可根据用户的需求进行设置,可以根据系统中包含的SQL脚本的数量确定该N的数值。例如,从SQL脚本资源库中,提取10%的SQL脚本生成异常消耗列表,则终端设备首先获取该SQL脚本资源中包含的脚本数量,并通过预设的比例值,计算该N值。特别地,该N值可根据当前监测时间的不同,配置对应的N值。对于繁忙时间,可能需要进行精细SQL脚本异常检测,则该N值较大;而对于空闲时间,系统的空闲资源较大,因此可进行粗略SQL脚本异常检测,则该N值较小。
在本实施例中,若存在多个SQL脚本的第一消耗特征值相同,因而选取的SQL脚本数M大于预设的N值,在该情况中,终端设备可将上述M个SQL脚本生成脚本消耗异常列表,且该列表中包含消耗特征较大的M个SQL脚本;终端设备还可以将根据用户设置的检测模式,从M个SQL脚本中,选取N个SQL脚本。具体地,由于不同的SQL脚本中的运行状态参数包含多个参数项,因此可根据参数项的数值的大小进行排序,确定N个SQL脚本。例如,该N值为3,而消耗值第三大的SQL脚本有2个,因此选取得到的SQL脚本数为4,第一大的SQL脚本、第二大的SQL脚本以及两个并列第三大的SQL脚本。此时,终端设备获取当前的检测模式为运行时间优先模式,则根据两个并列第三大的SQL脚本中运行状态参数的运行时间值,选取数值较大的一个SQL脚本,作为异常消耗的SQL脚本,与前两个SQL脚本生成脚本消耗异常列表。
在S104中,根据接收到的目标脚本选取指令,从所述脚本消耗异常列表中确定目标SQL脚本。
在本实施例中,用户可通过终端设备的显示模块,查看该脚本消耗异常列表,从该列表中选取一个或多个SQL脚本作为目标SQL脚本,其中,该目标SQL脚本具体为预判该SQL脚本为异常脚本,但需要进一步进行检测确认的脚本。当然,终端设备也可以通过预设的脚本选取算法,从脚本异常消耗列表中,选取目标SQL脚本,也可以依次对上述脚本异常消耗列表中的所有SQL脚本一一进行排查。
在本实施例中,终端设备在接收到目标脚本选取指令后,将获取该目标脚本选取指令中包含的脚本标识,并将该脚本标识与脚本消耗异常列表中的各个SQL脚本的脚本标识进行匹配,确定该选取指令对应的SQL脚本,识别为目标SQL脚本。
在本实施例中,该脚本标识可以为SQL脚本的文件名、脚本编号、列表中的序列号,还可以是用户在终端设备的触控模块上从脚本消耗异常列表中选取目标SQL脚本时,触发的位置坐标。
在S105中,基于SQL脚本执行记录,确定所述目标SQL脚本对应的脚本调用终端;其中,所述脚本调用终端具体为:在当前的检测周期内调用过所述目标SQL脚本的终端。
在本实施例中,终端设备记录了各个SQL脚本的调用记录,其中除了SQL脚本的运行情况参数外,还记录有调用该SQL脚本对应的脚本调用终端标识,并生成对应的SQL脚本执行记录。因此,终端设备将根据该SQL脚本执行记录,获取在当前的检测周期内,调用过该SQL脚本的终端情况,并识别为该SQL脚本对应的脚本调用终端。
在本实施例中,一个SQL脚本可以对应多个脚本调用终端,在该情况下,则表示该目标SQL脚本在预设的检测周期内,被多个终端调用过,该终端可以为数据库服务器,特别地,各个脚本调用终端可以同时调用同一个SQL脚本,具体的实施方式为将该SQL脚本中对应的SQL搜索策略,拷贝到本地的内存中,并通过内存运行该SQL脚本中对应的SQL搜索策略。当然,在S105中,获取到的脚本调用终端可以为一个,在该情况下,则表示该目标SQL脚本在预设的检测周期内,只被同一个终端调用过。
可选地,在本实施例中,终端设备将获取到的目标SQL脚本对应的脚本调用终端,导入至预设的关于第二消耗特征值与调用终端的对应关系列表模板,继而执行S106的相关操作。
在S106中,分别统计各个脚本调用终端调用所述目标SQL脚本时对应的第二消耗特征值,得到关于所述第二消耗特征值与所述脚本调用终端的对应关系列表。
在本实施例中,终端设备将分别获取各个脚本调用终端的运行状态参数,并基于该脚本调用终端的运行状态参数,计算其对应的第二消耗特征值。具体的计算方式与S102的方式一致,具体的描述可参见S102的相关阐述,在此不再赘述。
在本实施例中,终端设备在得到各个脚本调用终端对应的第二消耗特征值的情况后,将上述第二消耗特征值以及调用终端关联导入至上述关于第二消耗特征值与所述调用终端的对应关系列表,以便用户通过该对应关系列表,确定各个脚本调用终端对应的消耗情况,从而可以对消耗较大的脚本调用终端执行进一步的兼容性异常检测的操作。
在S107中,从所述对应关系列表中选取最大的第二消耗特征值对应的脚本调用终端,作为目标调用终端。
在本实施例中,由于某一脚本调用终端调用该目标SQL脚本时对应的消耗较大,则可能是由于两者之间的不兼容而导致的,因此终端设备将从该对应关系列表中,选取第二特征值消耗值最大的脚本调用终端,作为目标调用终端。
可选地,终端设备可根据对应关系中各个脚本调用终端的第二消耗特征值数值的大小,由小到大进行排序,确定各个脚本调用终端对应的列编号,生成该对应关系列表。在该情况下,终端设备只需直接获取列编号为1对应的数据即可,而无需再每一次执行S107的操作时,均执行大小识别的操作,从而提高了异常检测的效率。
在S108中,获取所述目标调用终端在所述当前的检测周期内调用除所述目标SQL脚本外的其他SQL脚本时对应的第二运行状态参数。
在本实施例中,终端设备在确定了目标调用终端后,将确定该消耗较大的情况是针对目标SQL脚本抑或是该目标调用终端在调用其他SQL脚本时,均会存在消耗较大的情况,因此,需要获取该目标调用终端在当前的检测周期内调用其他SQL脚本时对应的第二运行状态参数。
在本实施例中,对于数据库中包含数据量较大的调用终端,每运行一次SQL脚本时对应的运行时间以及占用的资源量均会较大,在该情况下,则表示并非SQL脚本与该脚本调用终端不兼容,即并非SQL脚本发生异常而导致消耗过高,而是由于终端设备本身的数据量导致的,这一情况将存在于该目标调用终端调用的各个SQL脚本,表现为该目标调用终端对应的平均消耗特征值将较大;而对于调用其他SQL脚本时消耗情况正常,但调用该目标SQL脚本时却出现消耗过高,则是由于该目标SQL脚本与数据库不兼容导致的,表现为其对应的平均消耗特征值较小,但该目标SQL脚本对应的第二消耗特征值较大。因此,终端设备可通过平均消耗特征值判定该目标SQL脚本与该目标调用终端是否兼容。
在本实施例中,每一个其他SQL脚本对应一个第二运行状态参数,因此,若在当前的检测周期内目标调用终端调用了多个除目标SQL脚本外的SQL脚本,即在S108中将获取多个第二运行状态参数,换而言之,第二运行状态参数的个数与目标调用终端调用的其他SQL脚本的数量一致。
在S109中,基于所述第二运行状态参数,计算所述目标调用终端对应的平均调用消耗值。
在本实施例中,终端设备在获取了其他SQL对应的第二运行状态参数后,将通过S102的方式,计算各个第二运行状态参数对应的消耗特征值,并通过多个第二运行状态参数对应的消耗特征值,确定该目标调用终端对应的平均调用消耗值。
例如,目标调用终端在当前的检测周期内除目标SQL脚本外调用了4个SQL脚本,上述SQL脚本对应的消耗特征值分别为52%、67%、43%以及58%,因此计算得到的平均调用消耗值为55%。
在S110中,若所述目标调用终端对应的第二消耗特征值与所述平均调用消耗值之差大于预设的浮动阈值,则识别所述目标SQL脚本与所述目标调用终端不兼容。
在本实施例中,终端设备将获取得到的平均调用消耗值以及第二消耗特征值相减,得到两者之间的差值,继而确定第二消耗特征值与目标调用脚本的平均消耗情况的差异程度,将该差值与预设的浮动阈值进行比对,若该差值小于或等于该浮动阈值,则表示目标SQL脚本的消耗情况与该目标调用终端的平均消耗水平相持平,属于正常状态;若该差值大于该浮动阈值,则表示目标调用终端在调用目标SQL脚本时,消耗远远大于调用其他SQL脚本,这情况将由于目标SQL脚本异常导致的,识别其为SQL脚本与目标调用终端不兼容。
可选地,在本实施例中,若终端设备在检测到目标调用终端与目标SQL脚本不兼容,则发送脚本异常信息给到该SQL脚本对应的账户,以该账户进行异常修复处理。
以上可以看出,本发明实施例提供的一种SQL脚本的异常检测方法通过获取SQL脚本的运行状态参数,并通过该运行状态参数确定该SQL脚本在预设的时间段内的消耗情况,得到第一消耗特征值,继而终端设备选取消耗最大的N个SQL脚本,进一步确定上述SQL脚本是否存在异常情况,因而终端设备将根据消耗较大的N个SQL脚本生成脚本消耗异常列表,并从脚本异常消耗列表中提取接收到的目标脚本选取指令对应的SQL脚本作为目标SQL脚本,进而获取该目标SQL脚本被不同的脚本调用终端调用时对应的运行状态参数,计算出第二消耗特征值,并生成关于第二消耗特征值与调用终端的对应关系列表,从该对应关系列表中选取第二消耗特征值对应的脚本调用终端,作为目标调用终端,继而获取该目标调用终端调用其他SQL脚本时对应的平均调用消耗值,并确定该目标调用终端与目标SQL脚本是否兼容。与现有的SQL脚本的异常检测技术相比,本发明实施例无需数据库的管理员对SQL脚本的异常情况进行手动排查,终端设备自动生成一个存在异常几率较大的脚本异常消耗列表,缩小了管理员的检测范围,并根据管理员的选择的目标SQL脚本,检测该目标SQL脚本是否与各个脚本调用终端存在版本冲突的情况,从而造成不兼容,无需用户进行异常识别,大大提高了异常检测的准确率以及响应速率。另一方面,由于异常检测的过程主要通过终端设备完成,对于管理员的技术水平要求较低,从而也降低了数据库的维护成本。
图2示出了本发明第二实施例提供的一种SQL脚本的异常检测方法的具体实现流程图。参见图2所示,相对于图1所述实施例,本实施例提供的一种SQL脚本的异常检测方法中还包括S201~S204,具体详述如下:
进一步地,在所述若所述目标调用终端对应的第二消耗特征值与所述平均调用消耗值之差大于预设正常浮动阈值,则识别所述目标SQL脚本与所述目标调用终端不兼容之后,还包括:
在S201中,获取在多个预设的时间节点所述目标调用终端调用所述目标SQL脚本时对应的第二消耗特征值,并生成历史调用消耗曲线。
在本实施例中,终端设备记录有各个SQL脚本的历史运行情况。终端设备将以预设的时间间隔获取各个SQL脚本的运行状态参数,并存储于各个SQL脚本对应的历史运行记录中。当用户需要获取该SQL脚本的历史运行情况,可以通过直接获取该历史运行记录,确定其对应的运行状态参数的变化情况。
在本实施例中,终端设备将根据该预存的SQL脚本的历史运行记录,获取各个预设的时间节点时该目标调用终端调用该目标SQL脚本时的运行状态参数,并将运行状态参数转换为第二消耗特征值,从而得到该目标调用终端对应的第二消耗特征值的历史消耗记录。特别地,该预设的时间节点可以为预设的参数采集周期,即各个预设的时间间隔对应的时间点。
在本实施例中,终端设备将以第二消耗特征值为纵坐标,时间点为横坐标,生成一个坐标轴,绘制出历史消耗特征曲线,并通过显示模块输出该历史消耗特征曲线,以便用户查看。
在S202中,确定所述历史调用消耗曲线中导数值最大对应的时间节点,作为异常触发节点。
在本实施例中,终端设备将获取历史调用消耗曲线中各个坐标点对应的导数值,由于导数值可以表示该目标SQL脚本的消耗变化速度,从而确定该第一消耗特征值是缓慢的变化抑或是急速的突变。若该导数值较小,则表示该目标SQL文件的消耗情况是缓慢攀升或缓慢下降,则可能是由于调用该目标SQL文件对应的终端设备的处于满载状态或硬件发热,而导致消耗逐渐增加,而并非目标SQL文件与目标调用终端不兼容而导致的;若该导数值较大,则表示该目标SQL文件的消耗情况是急剧攀升抑或是急剧下降,导致该情况出现较大可能是由于SQL文件的兼容性发生了改变,由正常状态转变为异常状态导致的。因此,终端设备将获取该历史消耗曲线中导数值最大的对应的时间节点,作为异常触发节点。
可选地,在本实施例中,终端设备还可以将导数值最大对应的时间节点与预设的导数阈值进行比对,当历史调用消耗曲线中导数最大的数值小于或等于该导数阈值,则表示该曲线一直处于平缓变化的过程,并不存在突变的情况,在该情况下,将获取历史消耗特征曲线中,导数由负数转变为正数对应的时间节点作为异常触发节点;反之,若该导数最大的数值大于该导数阈值,则只需将该导数值最大的时间节点作为异常触发节点。
在S203中,获取所述目标SQL脚本以及所述目标调用终端于所述异常触发节点时产生的版本变更文件。
终端设备检测到在异常触发节点之后目标SQL脚本与目标调用终端之间存在兼容问题,且在异常触发节点之前目标调用终端在调用目标SQL脚本时,消耗均在正常范围之内,则表示在该异常触发节点时,目标SQL脚本和/或异常触发节点发生了版本变更情况,从而在版本变更之后,两者之间由兼容状态转变为不兼容状态,因此,为了消除该目标SQL脚本的异常情况,终端设备将获取在该异常触发时间节点时目标SQL脚本以及目标调用终端产生的版本变更文件。
需要说明的是,上述异常触发节点具体为:以异常触发节点对应的时刻为中心,预设时间区间内对应的时间段。若在该预设的时间段内并未获取到任意版本变更文件,终端设备将生产版本异常指令给到该目标调用终端对应的处理账户,以便该处理账户就版本突变进行异常处理;反之,若该在预设的时间段内获取到任一版本变更文件,则只需S204的相关操作。
在S204中,根据所述版本变更文件生成兼容冲突报告,并将所述兼容冲突报告发送给所述目标调用终端对应的处理账户。
在本实施例中,终端设备将获取得到版本变更文件,导入到预设的兼容冲突报告模板中,继而得到该次检测对应的兼容冲突报告。继而终端设备将从预设的调用终端资料库中,确定该目标调用终端对应的处理账户以及该处理账户对应的通信地址。根据该通信地址,生成一条与该处理账户相互通信的通信链路,并通过该通信链路将该兼容冲突报告发送给该处理账户。其中,该兼容冲突报告包括但不限于:在本次采集过程中获取得到的SQL脚本相当于该目标调用终端的第二消耗特征值、异常触发节点对应的版本变更文件、该历史调用消耗曲线以及SQL脚本对应的脚本文件。
可选地,在本实施例中,终端设备还可以在该处理账户对应的办公系统中生成一条关于该兼容冲突报告的处理事件,并将该处理事件推送给该处理账户,以便该处理账户在办公系统上,记录其异常处理操作。
在本发明实施例中,通过检测异常触发节点,并获取对应的版本变更文件,以便让异常处理账户能够快速定位异常发生的对应的时刻以及成因,有效地修复该异常情况,提高了故障响应的效率。
图3了本发明第三实施例提供的一种SQL脚本的异常检测方法的具体实现流程图。参见图3所示,相对于图1所述实施例,本实施例提供的一种SQL脚本的异常检测方法中,在S107之后还包括S301以及S302,具体详述如下:
进一步地,在所述基于所述调用运行状态参数,计算所述目标调用终端对应的平均调用消耗值之后,还包括:
在S301中,若所述目标调用终端对应的第二消耗特征值与所述平均调用消耗值之差小于或等于所述预设的浮动阈值,则将所述目标调用终端的消耗记录从所述对应关系列表中移除。
在本实施例中,终端设备在检测到第二消耗特征值与该目标调用终端的平均调用消耗情况持平,则表示该目标调用终端在调用其他SQL脚本时,消耗也较高,并非单单调用目标SQL脚本时,才出现高消耗的情况,则可能是由于该目标调用终端本身数据库的数据量的大小而导致的,即目标SQL脚本与目标调用终端之间是兼容的,即两者并未出现版本冲突的异常情况。
在本实施例中,终端设备将从对应关系列表中移除该目标调用终端的消耗记录,继而得到更新后的对应关系列表,从而在下一次选取目标调用终端时,不会再选取本次检测的脚本调用终端作为目标调用终端。
需要说明的是,该消耗记录具体为包含脚本调用终端与其对应的第二消耗特征值的记录。
在S302中,返回执行所述选取所述调用消耗列表中所述第二消耗特征值最大对应的脚本调用终端,作为目标调用终端的操作,直到所述对应关系列表不包含任一所述脚本调用终端的消耗记录,并识别所述目标SQL脚本为正常脚本。
在本实施例中,终端设备为了进一步确定该目标SQL脚本与其他脚本调用终端之间是否仍存在兼容冲突的情况,因此,将从移除后的对应关系列表中,再次选取第二特征消耗值最大的一个脚本调用终端作为目标调用终端,并执行S106~S108的相关操作。
在本实施例中,若该对应关系列表中各个脚本调用终端均判定与该目标SQL脚本兼容,即对应关系列表中各个脚本调用终端对应的消耗记录均被移除,则表示该目标SQL脚本为正常脚本。
在本发明实施例中,通过与对应关系列表中各个脚本调用终端进行兼容性检测操作,从而确定该目标SQL脚本与其他脚本调用终端是否存在兼容冲突,从而在一次检测操作中,即可找出所有与目标SQL脚本存在异常冲突的脚本调用终端,提高了异常检测的效率。
图4了本发明第四实施例提供的一种SQL脚本的异常检测方法S101的具体实现流程图。参见图4所示,相对于图1所述实施例,本实施例提供的一种SQL脚本的异常检测方法中S101包括S401~S403,具体详述如下:
进一步地,所述获取各个SQL脚本的运行状态参数,包括:
在S401中,监测当前时间是否满足预设的异常检测触发时机。
终端设备在获取各个SQL脚本之前,需要对其触发时机进行判定,在本实施例中,终端设备采用时机触发以及消耗触发相结合的检测触发方式。首先,终端设备将获取监测当前时间是否与预设的异常检测触发时机匹配,特别地,该异常检测触发时机为一周期触发时机,也可以为用户预先设置的多个时间点。当终端设备判定当前时间与异常检测触发时机相匹配,则执行S402的相关操作,反之,则保持待机状态,以减少电量的消耗。
在S402中,若当前时间满足预设的异常检测触发时机,则获取待检测终端当前的资源占用率。
在本实施例中,终端设备在获知当前时间与异常检测触发时机相匹配时,则获取该待检测终端的当前的资源占用率。其中,待检测终端具体为:调用各个SQL脚本的终端。若本实施例的终端设备集成于数据库服务器中,且该数据库服务器调用各个SQL脚本,则在该情况下,待检测终端即为本实施例提供的终端设备;若终端设备为一独立的检测终端,则该待检测终端即为调用各个SQL脚本的数据库服务器。
在本实施例中,终端设备将获取待检测终端当前的资源占用率,若待检测终端为单独一个终端,即调用各个SQL脚本的数据库服务器均为同一个服务器,则可直接将该终端的资源占用率作为该待检测终端对应的资源占用率;若待检测终端为多个数据库服务器组成的数据库系统,则该资源占用率为整个数据库系统的资源占用率。特别地,若终端设备集成于数据库服务器内,则获取该终端设备本地的资源占用率。
在本实施例中,终端设备设置有一占用率阈值,当获取到的资源占用率大于该占用率阈值时,则表示可能存在SQL脚本异常的情况,执行S303的操作;反之,若获取到的资源占用率小于或等于占用率阈值,则表示当前SQL脚本运行基本处于正常状态,并未达到需进行异常处理的级别,因此将返回S301,等待下一个检测时机的到达。可选地,在本实施例中,该占用率阈值可根据时间的推移而变化,例如空闲时段,调用SQL脚本的次数以及个数较少,因此其对应的占用率阈值可以较低,而满分时段,调用SQL脚本的次数以及个数均较多,因此其对应的占用率阈值可以较高。
在S403中,若所述资源占用率大于预设的占用率阈值,则获取各个所述SQL脚本的运行状态参数。
在本实施例中,终端设备在检测到资源占用率大于预设的占用率阈值时,则判定当前SQL脚本中可能存在异常脚本,因此将执行异常检测的操作。
在本发明实施例中,通过设置异常检测时机以及占用率阈值,从而在可能存在异常的情况时,自动执行异常检测操作,从而避免不必要的检测流程,提高了终端的资源利用率。
图5示出了本发明第五实施例提供的一种SQL脚本的异常检测方法S102的具体实现流程图。参见图5所示,相对于图1至4所述实施例,本实施例提供的一种SQL脚本的异常检测方法中所述根据各个所述SQL脚本的运行状态参数,计算各个所述SQL脚本对应的第一消耗特征值第一消耗特征值第一消耗特征值,包含S501以及S502,详述如下:
进一步地,所述运行状态参数包括:运算资源占用参数、平均运行时间参数、内存占用参数以及运行次数;所述根据各个所述SQL脚本的运行状态参数,计算各个所述SQL脚本对应的第一消耗特征值,包括:
在S501中,确定各个所述运行状态参数对应的权重值。
在本实施例中,终端设备获取各个SQL脚本的运行状态参数包含多种类型的参数,分别为运算资源占用参数、平均运行时间参数、内存占用参数以及运行次数,不同的运作状态参数对应的权重值均不相同,因此终端设备首先需要确定各个运行状态参数对应的权重值,并根据上述权重值生成与之对应的消耗特征转换模型。
可选地,在本实施例中,终端设备可根据当前的检测模式,调整各个运行状态参数对应的权重值。例如,若当前的检测模式为运行时间优先模式,则平均运行时间参数对应的权重值较大,并适当调整其他运行状态参数的权重值;若当前的检测模式为内存优先模式,则内存占用参数对应的权重值较大,从而使得第一消耗特征值能够更有效表示对应检测模式的消耗情况。
在S502中,将各个所述SQL脚本对应的所述运算资源占用参数、所述平均运行时间参数、所述内存占用参数以及所述运行次数,导入至消耗特征值转换模型,分别计算出各个所述SQL脚本对应的第一消耗特征值,所述消耗特征值转换模型具体为:
Ex=α1Ct(SQL)+α2T(SQL)+α3Buff(SQL)+α4Q(SQL)
其中,Ex为SQL脚本的第一消耗特征值,α1、α2、α3和α4为各个运行状态参数对应的权重值,Ct(SQL)为SQL脚本的运算资源占用参数,T(SQL)为SQL脚本的平均运行时间参数,Buff(SQL)为SQL脚本的内存占用参数,Q(SQL)为SQL脚本的运行次数。
在本实施例中,终端设备将S101中获取得到的多个运行状态参数对应的参数值导入到消耗特征转换模型中对应的位置中,并通过该消耗特征值转换模型,通过运行状态参数计算对应的第一消耗特征值。
在本发明实施例中,通过将获取得到的多个运行状态参数导入到预设的消耗特征转换模型中,实现由运行状态参数到第一消耗特征值的转换,提高了第一消耗特征值的计算效率。
应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
图6示出了本发明一实施例提供的一种SQL脚本的异常检测终端的结构框图,该SQL脚本的异常检测终端包括的各单元用于执行图1对应的实施例中的各步骤。具体请参阅图1与图1所对应的实施例中的相关描述。为了便于说明,仅示出了与本实施例相关的部分。
参见图6,所述SQL脚本的异常检测终端包括:
运行状态参数获取单元601,用于获取各个SQL脚本的运行状态参数;
第一消耗值计算单元602,用于根据各个所述SQL脚本的运行状态参数,计算各个所述SQL脚本对应的第一消耗特征值;其中,所述第一消耗特征值用于表示所述SQL脚本对设备资源的占用情况;
消耗异常列表生成单元603,用于将各个所述SQL脚本对应的第一消耗特征值按从大到小进行排序,并选取前N个第一消耗特征值对应的SQL脚本,生成脚本消耗异常列表;其中,所述N为小于SQL脚本个数的正整数;
目标SQL脚本确定单元604,用于根据接收到的目标脚本选取指令,从所述脚本消耗异常列表中确定目标SQL脚本;
脚本调用终端确定单元605,用于基于SQL脚本执行记录,确定所述目标SQL脚本对应的脚本调用终端;其中,所述脚本调用终端具体为:在当前的检测周期内调用过所述目标SQL脚本的终端;
对应关系列表生成单元606,用于分别统计各个脚本调用终端调用所述目标SQL脚本时对应的第二消耗特征值,得到关于所述第二消耗特征值与所述脚本调用终端的对应关系列表;
目标调用终端确定单元607,用于从所述对应关系列表中选取最大的第二消耗特征值对应的脚本调用终端,作为目标调用终端;
第二运行状态参数获取单元608,用于获取所述目标调用终端在所述当前的检测周期内调用除所述目标SQL脚本外的其他SQL脚本时对应的第二运行状态参数;
平均调用消耗计算单元609,用于基于所述第二运行状态参数,计算所述目标调用终端对应的平均调用消耗值;
异常判定单元610,用于若所述目标调用终端对应的第二消耗特征值与所述平均调用消耗值之差大于预设的浮动阈值,则识别所述目标SQL脚本与所述目标调用终端不兼容。
可选地,所述SQL脚本的异常检测终端,还包括:
历史调用消耗曲线生成单元,用于获取在多个预设的时间节点所述目标调用终端调用所述目标SQL脚本时对应的第二消耗特征值,并生成历史调用消耗曲线;
异常触发节点确定单元,用于确定所述历史调用消耗曲线中导数值最大对应的时间节点,作为异常触发节点;
版本变更文件获取单元,用于获取所述目标SQL脚本以及所述目标调用终端于所述异常触发节点时产生的版本变更文件;
兼容冲突报告发送单元,用于根据所述版本变更文件生成兼容冲突报告,并将所述兼容冲突报告发送给所述目标调用终端对应的处理账户。
可选地,所述SQL脚本的异常检测终端,还包括:
消耗记录移除单元,用于若所述目标调用终端对应的第二消耗特征值与所述平均调用消耗值之差小于或等于所述预设的浮动阈值,则将所述目标调用终端的消耗记录从所述对应关系列表中移除;
脚本正常判定单元,用于返回执行所述选取所述调用消耗列表中所述第二消耗特征值最大对应的脚本调用终端,作为目标调用终端的操作,直到所述对应关系列表不包含任一所述脚本调用终端的消耗记录,并识别所述目标SQL脚本为正常脚本。
可选地,所述运行状态参数获取单元61包括:
触发时间监测单元,用于监测当前时间是否满足预设的异常检测触发时机;
资源占用率获取单元,用于若当前时间满足预设的异常检测触发时机,则获取待检测终端当前的资源占用率;
检测启动判定单元,用于若所述资源占用率大于预设的占用率阈值,则获取各个所述SQL脚本的运行状态参数。
可选地,所述运行状态参数包括:运算资源占用参数、平均运行时间参数、内存占用参数以及运行次数;所述第一消耗值计算单元62包括:
运行参数权重确定单元,用于确定各个所述运行状态参数对应的权重值;
消耗特征值转换模型导入单元,用于将各个所述SQL脚本对应的所述运算资源占用参数、所述平均运行时间参数、所述内存占用参数以及所述运行次数,导入至消耗特征值转换模型,分别计算出各个所述SQL脚本对应的第一消耗特征值,所述消耗特征值转换模型具体为:
Ex=α1Ct(SQL)+α2T(SQL)+α3Buff(SQL)+α4Q(SQL)
其中,Ex为SQL脚本的第一消耗特征值,α1、α2、α3和α4为各个运行状态参数对应的权重值,Ct(SQL)为SQL脚本的运算资源占用参数,T(SQL)为SQL脚本的平均运行时间参数,Buff(SQL)为SQL脚本的内存占用参数,Q(SQL)为SQL脚本的运行次数。
因此,本发明实施例提供的SQL脚本的异常检测终端同样可以通过获取SQL脚本的运行状态参数,并通过该运行状态参数确定该SQL脚本在预设的时间段内的消耗情况,得到第一消耗特征值,继而终端设备选取消耗最大的N个SQL脚本,进一步确定上述SQL脚本是否存在异常情况,因而终端设备将根据消耗较大的N个SQL脚本生成脚本消耗异常列表,并从脚本异常消耗列表中提取接收到的目标脚本选取指令对应的SQL脚本作为目标SQL脚本,进而获取该目标SQL脚本被不同的脚本调用终端调用时对应的运行状态参数,计算出第二消耗特征值,并生成关于第二消耗特征值与调用终端的对应关系列表,从该对应关系列表中选取第二消耗特征值对应的脚本调用终端,作为目标调用终端,继而获取该目标调用终端调用其他SQL脚本时对应的平均调用消耗值,并确定该目标调用终端与目标SQL脚本是否兼容。与现有的SQL脚本的异常检测技术相比,本发明实施例无需数据库的管理员对SQL脚本的异常情况进行手动排查,终端设备自动生成一个存在异常几率较大的脚本异常消耗列表,缩小了管理员的检测范围,并根据管理员的选择的目标SQL脚本,检测该目标SQL脚本是否与各个脚本调用终端存在版本冲突的情况,从而造成不兼容,无需用户进行异常识别,大大提高了异常检测的准确率以及响应速率。另一方面,由于异常检测的过程主要通过终端设备完成,对于管理员的技术水平要求较低,从而也降低了数据库的维护成本。
图7是本发明另一实施例提供的一种终端设备的示意图。如图7所示,该实施例的终端设备7包括:处理器70、存储器71以及存储在所述存储器71中并可在所述处理器70上运行的计算机程序72,例如SQL脚本的异常检测程序。所述处理器70执行所述计算机程序72时实现上述各个SQL脚本的异常检测方法实施例中的步骤,例如图1所示的S101至S110。或者,所述处理器70执行所述计算机程序72时实现上述各装置实施例中各单元的功能,例如图6所示模块601至610功能。
示例性的,所述计算机程序72可以被分割成一个或多个单元,所述一个或者多个单元被存储在所述存储器71中,并由所述处理器70执行,以完成本发明。所述一个或多个单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述所述计算机程序72在所述终端设备7中的执行过程。例如,所述计算机程序72可以被分割成运行状态参数获取单元、第一消耗值计算单元、消耗异常列表生成单元、目标SQL脚本确定单元、脚本调用终端确定单元、对应关系列表生成单元、目标调用终端确定单元、第二运行状态参数获取单元、平均调用消耗计算单元以及异常判定单元,各单元具体功能如下:
运行状态参数获取单元,用于获取各个SQL脚本的运行状态参数;
第一消耗值计算单元,用于根据各个所述SQL脚本的运行状态参数,计算各个所述SQL脚本对应的第一消耗特征值;其中,所述第一消耗特征值用于表示所述SQL脚本对设备资源的占用情况;
消耗异常列表生成单元,用于将各个所述SQL脚本对应的第一消耗特征值按从大到小进行排序,并选取前N个第一消耗特征值对应的SQL脚本,生成脚本消耗异常列表;其中,所述N为小于SQL脚本个数的正整数;
目标SQL脚本确定单元,用于根据接收到的目标脚本选取指令,从所述脚本消耗异常列表中确定目标SQL脚本;
脚本调用终端确定单元,用于基于SQL脚本执行记录,确定所述目标SQL脚本对应的脚本调用终端;其中,所述脚本调用终端具体为:在当前的检测周期内调用过所述目标SQL脚本的终端;
对应关系列表生成单元,用于分别统计各个脚本调用终端调用所述目标SQL脚本时对应的第二消耗特征值,得到关于所述第二消耗特征值与所述脚本调用终端的对应关系列表;
目标调用终端确定单元,用于从所述对应关系列表中选取最大的第二消耗特征值对应的脚本调用终端,作为目标调用终端;
第二运行状态参数获取单元,用于获取所述目标调用终端在所述当前的检测周期内调用除所述目标SQL脚本外的其他SQL脚本时对应的第二运行状态参数;
平均调用消耗计算单元,用于基于所述第二运行状态参数,计算所述目标调用终端对应的平均调用消耗值;
异常判定单元,用于若所述目标调用终端对应的第二消耗特征值与所述平均调用消耗值之差大于预设的浮动阈值,则识别所述目标SQL脚本与所述目标调用终端不兼容。
所述终端设备7可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。所述终端设备可包括,但不仅限于,处理器70、存储器71。本领域技术人员可以理解,图7仅仅是终端设备7的示例,并不构成对终端设备7的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如所述终端设备还可以包括输入输出设备、网络接入设备、总线等。
所称处理器70可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
所述存储器71可以是所述终端设备7的内部存储单元,例如终端设备7的硬盘或内存。所述存储器71也可以是所述终端设备7的外部存储设备,例如所述终端设备7上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。进一步地,所述存储器71还可以既包括所述终端设备7的内部存储单元也包括外部存储设备。所述存储器71用于存储所述计算机程序以及所述终端设备所需的其他程序和数据。所述存储器71还可以用于暂时地存储已经输出或者将要输出的数据。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本申请的保护范围。上述系统中单元、模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
在本发明所提供的实施例中,应该理解到,所揭露的装置/终端设备和方法,可以通过其它的方式实现。例如,以上所描述的装置/终端设备实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通讯连接可以是通过一些接口,装置或单元的间接耦合或通讯连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
以上所述实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围,均应包含在本发明的保护范围之内。
Claims (10)
1.一种SQL脚本的异常检测方法,其特征在于,包括:
获取待检测系统中各个SQL脚本的第一运行状态参数;
根据各个所述SQL脚本的第一运行状态参数,分别计算各个所述SQL脚本对应的第一消耗特征值,其中,所述第一消耗特征值用于表示所述SQL脚本对设备资源的占用情况;
将各个所述SQL脚本对应的第一消耗特征值按从大到小进行排序,并选取前N个第一消耗特征值对应的SQL脚本,生成脚本消耗异常列表;其中,所述N为小于SQL脚本个数的正整数;
根据接收到的目标脚本选取指令,从所述脚本消耗异常列表中确定目标SQL脚本;
基于SQL脚本执行记录,确定所述目标SQL脚本对应的脚本调用终端;其中,所述脚本调用终端具体为:在当前的检测周期内调用过所述目标SQL脚本的终端;
分别统计各个脚本调用终端调用所述目标SQL脚本时对应的第二消耗特征值,得到关于所述第二消耗特征值与所述脚本调用终端的对应关系列表;
从所述对应关系列表中选取最大的第二消耗特征值对应的脚本调用终端,作为目标调用终端;
获取所述目标调用终端在所述当前的检测周期内调用除所述目标SQL脚本外的其他SQL脚本时对应的第二运行状态参数;
基于所述第二运行状态参数,计算所述目标调用终端对应的平均调用消耗值;
若所述目标调用终端对应的第二消耗特征值与所述平均调用消耗值之差大于预设的浮动阈值,则识别所述目标SQL脚本与所述目标调用终端不兼容。
2.根据权利要求1所述的异常检测方法,其特征在于,在所述若所述目标调用终端对应的第二消耗特征值与所述平均调用消耗值之差大于预设正常浮动阈值,则识别所述目标SQL脚本与所述目标调用终端不兼容之后,还包括:
获取在多个预设的时间节点所述目标调用终端调用所述目标SQL脚本时对应的第二消耗特征值,并生成历史调用消耗曲线;
确定所述历史调用消耗曲线中导数值最大对应的时间节点,作为异常触发节点;
获取所述目标SQL脚本以及所述目标调用终端于所述异常触发节点时产生的版本变更文件;
根据所述版本变更文件生成兼容冲突报告,并将所述兼容冲突报告发送给所述目标调用终端对应的处理账户。
3.根据权利要求1所述的异常检测方法,其特征在于,在所述基于所述调用运行状态参数,计算所述目标调用终端对应的平均调用消耗值之后,还包括:
若所述目标调用终端对应的第二消耗特征值与所述平均调用消耗值之差小于或等于所述预设的浮动阈值,则将所述目标调用终端的消耗记录从所述对应关系列表中移除;
返回执行所述选取所述调用消耗列表中所述第二消耗特征值最大对应的脚本调用终端,作为目标调用终端的操作,直到所述对应关系列表不包含任一所述脚本调用终端的消耗记录,并识别所述目标SQL脚本为正常脚本。
4.根据权利要求1所述的异常检测方法,其特征在于,所述获取待检测系统中各个SQL脚本的第一运行状态参数,包括:
监测当前时间是否满足预设的异常检测触发时机;
若当前时间满足预设的异常检测触发时机,则获取所述待检测系统当前的资源占用率;
若所述资源占用率大于预设的占用率阈值,则获取所述待检测系统中各个所述SQL脚本的第一运行状态参数。
5.根据权利要求1-4任一项所述的异常检测方法,其特征在于,所述运行状态参数包括:运算资源占用参数、平均运行时间参数、内存占用参数以及运行次数;
所述根据各个所述SQL脚本的第一运行状态参数,分别计算各个所述SQL脚本对应的第一消耗特征值,包括:
确定所述第一运行状态参数中各个参数值对应的权重值;
将所述SQL脚本对应的所述运算资源占用参数、所述平均运行时间参数、所述内存占用参数以及所述运行次数,导入至所述消耗特征值转换模型,分别计算出各个所述SQL脚本对应的第一消耗特征值,其中所述消耗特征值转换模型具体为:
Ex=α1Ct(SQL)+α2T(SQL)+α3Buff(SQL)+α4Q(SQL)
其中,Ex为SQL脚本的第一消耗特征值,α1、α2、α3和α4为各个运行状态参数对应的权重值,Ct(SQL)为SQL脚本的运算资源占用参数,T(SQL)为SQL脚本的平均运行时间参数,Buff(SQL)为SQL脚本的内存占用参数,Q(SQL)为SQL脚本的运行次数。
6.一种终端设备,其特征在于,所述终端设备包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如下步骤:
获取待检测系统中各个SQL脚本的第一运行状态参数;
根据各个所述SQL脚本的第一运行状态参数,分别计算各个所述SQL脚本对应的第一消耗特征值,其中,所述第一消耗特征值用于表示所述SQL脚本对设备资源的占用情况;
将各个所述SQL脚本对应的第一消耗特征值按从大到小进行排序,并选取前N个第一消耗特征值对应的SQL脚本,生成脚本消耗异常列表;其中,所述N为小于SQL脚本个数的正整数;
根据接收到的目标脚本选取指令,从所述脚本消耗异常列表中确定目标SQL脚本;
基于SQL脚本执行记录,确定所述目标SQL脚本对应的脚本调用终端;其中,所述脚本调用终端具体为:在当前的检测周期内调用过所述目标SQL脚本的终端;
分别统计各个脚本调用终端调用所述目标SQL脚本时对应的第二消耗特征值,得到关于所述第二消耗特征值与所述脚本调用终端的对应关系列表;
从所述对应关系列表中选取最大的第二消耗特征值对应的脚本调用终端,作为目标调用终端;
获取所述目标调用终端在所述当前的检测周期内调用除所述目标SQL脚本外的其他SQL脚本时对应的第二运行状态参数;
基于所述第二运行状态参数,计算所述目标调用终端对应的平均调用消耗值;
若所述目标调用终端对应的第二消耗特征值与所述平均调用消耗值之差大于预设的浮动阈值,则识别所述目标SQL脚本与所述目标调用终端不兼容。
7.根据权利要求6所述的终端设备,其特征在于,在所述若所述目标调用终端对应的第二消耗特征值与所述平均调用消耗值之差大于预设正常浮动阈值,则识别所述目标SQL脚本与所述目标调用终端不兼容之后,所述处理器执行所述计算机程序时还实现如下步骤:
获取在多个预设的时间节点所述目标调用终端调用所述目标SQL脚本时对应的第二消耗特征值,并生成历史调用消耗曲线;
确定所述历史调用消耗曲线中导数值最大对应的时间节点,作为异常触发节点;
获取所述目标SQL脚本以及所述目标调用终端于所述异常触发节点时产生的版本变更文件;
根据所述版本变更文件生成兼容冲突报告,并将所述兼容冲突报告发送给所述目标调用终端对应的处理账户。
8.根据权利要求6所述的终端设备,其特征在于,在所述基于所述调用运行状态参数,计算所述目标调用终端对应的平均调用消耗值之后,所述处理器执行所述计算机程序时还实现如下步骤:
若所述目标调用终端对应的第二消耗特征值与所述平均调用消耗值之差小于或等于所述预设的浮动阈值,则将所述目标调用终端的消耗记录从所述对应关系列表中移除;
返回执行所述选取所述调用消耗列表中所述第二消耗特征值最大对应的脚本调用终端,作为目标调用终端的操作,直到所述对应关系列表不包含任一所述脚本调用终端的消耗记录,并识别所述目标SQL脚本为正常脚本。
9.根据权利要求6所述的终端设备,其特征在于,所述获取待检测系统中各个SQL脚本的第一运行状态参数,包括:
监测当前时间是否满足预设的异常检测触发时机;
若当前时间满足预设的异常检测触发时机,则获取所述待检测系统当前的资源占用率;
若所述资源占用率大于预设的占用率阈值,则获取所述待检测系统中各个所述SQL脚本的第一运行状态参数。
10.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至5任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710945396.0A CN107797924B (zh) | 2017-10-12 | 2017-10-12 | 一种sql脚本的异常检测方法及其终端 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710945396.0A CN107797924B (zh) | 2017-10-12 | 2017-10-12 | 一种sql脚本的异常检测方法及其终端 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107797924A true CN107797924A (zh) | 2018-03-13 |
CN107797924B CN107797924B (zh) | 2020-02-21 |
Family
ID=61534084
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710945396.0A Active CN107797924B (zh) | 2017-10-12 | 2017-10-12 | 一种sql脚本的异常检测方法及其终端 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107797924B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108984612A (zh) * | 2018-06-12 | 2018-12-11 | 中国平安人寿保险股份有限公司 | 目标sql语句的获取方法、装置、计算机设备及存储介质 |
CN111930545A (zh) * | 2019-05-13 | 2020-11-13 | 中国移动通信集团湖北有限公司 | 程序脚本处理方法、装置和服务器 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110169860A1 (en) * | 2009-02-05 | 2011-07-14 | Masahiro Ito | Information Display Device |
CN104182340A (zh) * | 2014-08-21 | 2014-12-03 | 浪潮(北京)电子信息产业有限公司 | 数据库兼容性测试方法和系统 |
CN106411609A (zh) * | 2016-11-08 | 2017-02-15 | 上海新炬网络信息技术有限公司 | 一种it软硬件运行状态监控系统 |
CN106919612A (zh) * | 2015-12-25 | 2017-07-04 | 中国移动通信集团浙江有限公司 | 一种上线结构化查询语言脚本的处理方法及装置 |
-
2017
- 2017-10-12 CN CN201710945396.0A patent/CN107797924B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110169860A1 (en) * | 2009-02-05 | 2011-07-14 | Masahiro Ito | Information Display Device |
CN104182340A (zh) * | 2014-08-21 | 2014-12-03 | 浪潮(北京)电子信息产业有限公司 | 数据库兼容性测试方法和系统 |
CN106919612A (zh) * | 2015-12-25 | 2017-07-04 | 中国移动通信集团浙江有限公司 | 一种上线结构化查询语言脚本的处理方法及装置 |
CN106411609A (zh) * | 2016-11-08 | 2017-02-15 | 上海新炬网络信息技术有限公司 | 一种it软硬件运行状态监控系统 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108984612A (zh) * | 2018-06-12 | 2018-12-11 | 中国平安人寿保险股份有限公司 | 目标sql语句的获取方法、装置、计算机设备及存储介质 |
CN108984612B (zh) * | 2018-06-12 | 2024-02-02 | 中国平安人寿保险股份有限公司 | 目标sql语句的获取方法、装置、计算机设备及存储介质 |
CN111930545A (zh) * | 2019-05-13 | 2020-11-13 | 中国移动通信集团湖北有限公司 | 程序脚本处理方法、装置和服务器 |
CN111930545B (zh) * | 2019-05-13 | 2023-11-03 | 中国移动通信集团湖北有限公司 | Sql脚本处理方法、装置和服务器 |
Also Published As
Publication number | Publication date |
---|---|
CN107797924B (zh) | 2020-02-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10452625B2 (en) | Data lineage analysis | |
US9508075B2 (en) | Automated transaction cancellation | |
US20170279840A1 (en) | Automated event id field analysis on heterogeneous logs | |
CN106407244A (zh) | 基于多数据库的数据查询方法、系统和装置 | |
CN109344153A (zh) | 业务数据的处理方法及终端设备 | |
CN104756113B (zh) | 用于检测数据源中的偏差的方法、设备和计算机程序 | |
CN109254901B (zh) | 一种指标监测方法及系统 | |
CN109062936B (zh) | 一种数据查询方法、计算机可读存储介质及终端设备 | |
CN107622102A (zh) | 实体卡号生成方法及终端设备 | |
CN109344611A (zh) | 应用的访问控制方法、终端设备及介质 | |
CN102169491B (zh) | 一种多数据集中重复记录动态检测方法 | |
CN113409555B (zh) | 一种基于物联网的实时报警联动方法及系统 | |
CN109740129B (zh) | 基于区块链的报表生成方法、装置、设备及可读存储介质 | |
CN107070645A (zh) | 比较数据表的数据的方法和系统 | |
CN110222074A (zh) | 索引查找方法、查找装置、电子设备及存储介质 | |
CN111338888B (zh) | 一种数据统计方法、装置、电子设备及存储介质 | |
CN107797924A (zh) | 一种sql脚本的异常检测方法及其终端 | |
WO2017158802A1 (ja) | データ変換システム及びデータ変換方法 | |
CN104408144B (zh) | 网络搜索关键词的检测方法及装置 | |
CN110245684A (zh) | 数据处理方法、电子设备和介质 | |
CN110874365B (zh) | 一种信息查询方法及其相关设备 | |
CN107908555A (zh) | 一种sql脚本的异常检测方法及其终端 | |
CN109947797A (zh) | 一种数据检查装置及方法 | |
CN108255710B (zh) | 一种脚本的异常检测方法及其终端 | |
CN110008243A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |