书签 分享 收藏 举报 版权申诉 / 13

发现低性能的SQL语句以及预测SQL语句性能的方法和装置.pdf

  • 上传人:00062****4422
  • 文档编号:1749466
  • 上传时间:2018-07-09
  • 格式:PDF
  • 页数:13
  • 大小:961.92KB
  • 摘要
    申请专利号:

    CN201410044114.6

    申请日:

    2014.01.30

    公开号:

    CN104820663A

    公开日:

    2015.08.05

    当前法律状态:

    实审

    有效性:

    审中

    法律详情:

    实质审查的生效IPC(主分类):G06F 17/30申请日:20140130|||公开

    IPC分类号:

    G06F17/30

    主分类号:

    G06F17/30

    申请人:

    西门子公司

    发明人:

    方晓珊

    地址:

    德国慕尼黑

    优先权:

    专利代理机构:

    北京康信知识产权代理有限责任公司11240

    代理人:

    李慧

    PDF完整版下载: PDF下载
    内容摘要

    本发明涉及一种发现低性能的SQL语句以及预测SQL语句性能的方法和装置。该发现低性能的SQL语句的方法包括:跟踪SQL语句的执行成本和相关成本指标;基于跟踪到的SQL语句的执行成本和相关成本指标的历史数据,预测SQL语句的成本的动态阈值,以便基于SQL语句的在特定时刻执行成本和相应的预测出的成本的阈值,发现低性能的SQL语句。本发明的实施例能够高效地在数据库中发现低性能的SQL语句。

    权利要求书

    权利要求书
    1.  一种用于在数据库中发现低性能的SQL语句的方法,包括:
    跟踪SQL语句的执行成本和相关成本指标;
    基于跟踪到的SQL语句的执行成本和相关成本指标的历史数据,预测SQL语句的成本的动态阈值,以便基于SQL语句的在特定时刻执行成本和相应的预测出的成本的阈值,发现低性能的SQL语句。

    2.  根据权利要求1的方法,其中所述跟踪步骤包括:以固定时间间隔跟踪SQL语句的执行成本和相关成本指标。

    3.  根据权利要求1的方法,其中所述预测步骤包括:以固定时间间隔从跟踪到的SQL语句的执行成本和相关成本指标的历史数据中预测所述成本的动态阈值。

    4.  根据权利要求1的方法,其中所述方法还包括:响应于SQL语句的在特定时刻执行成本高于预测的在该特定时刻成本的阈值,判断该SQL语句在该特定时刻性能低。

    5.  一种用于预测SQL语句的性能的方法,包括:
    跟踪SQL语句的性能指标和相关数据量、并发量;
    基于跟踪到的SQL语句的性能指标和相关数据量、并发量的历史数据,确定性能指标随数据量和并发量变化的趋势;
    响应于输入的数据量和并发量,基于该性能指标随数据量和并发量变化的趋势,输出在该数据量和并发量下的性能指标。

    6.  根据权利要求5的方法,其中所述性能指标是SQL语句的执行成本。

    7.  根据权利要求5的方法,其中所述跟踪步骤包括:以固定时间间隔跟踪SQL语句的性能指标和相关数据量、并发量。

    8.  根据权利要求5的方法,其中所述确定步骤包括:以固定时间间隔动态地从SQL语句的性能指标和相关数据量、并发量的历史数据中确定性能指标随数据量和并发量变化的趋势。

    9.  一种用于在数据库中发现低性能的SQL语句的装置,包括:
    跟踪单元,被配置为跟踪SQL语句的执行成本和相关成本指标;
    预测单元,被配置为基于跟踪到的SQL语句的执行成本和相关成本指标的历史数据,预测SQL语句的成本的动态阈值,以便基于SQL语句的在 特定时刻执行成本和相应的预测出的成本的阈值,发现低性能的SQL语句。

    10.  根据权利要求9的装置,其中所述跟踪单元被配置为以固定时间间隔跟踪SQL语句的执行成本和相关成本指标。

    11.  根据权利要求9的装置,其中所述预测单元被配置为以固定时间间隔从跟踪到的SQL语句的执行成本和相关成本指标的历史数据中预测所述成本的动态阈值。

    12.  根据权利要求9的装置,其中所述装置还包括:判断单元,被配置为响应于SQL语句的在特定时刻执行成本高于预测的在该特定时刻成本的阈值,判断该SQL语句在该特定时刻性能低。

    13.  一种用于预测SQL语句的性能的装置,包括:
    跟踪单元,被配置为跟踪SQL语句的性能指标和相关数据量、并发量;
    确定单元,被配置为基于跟踪到的SQL语句的性能指标和相关数据量、并发量的历史数据,确定性能指标随数据量和并发量变化的趋势;
    输出单元,被配置为响应于输入的数据量和并发量,基于该性能指标随数据量和并发量变化的趋势,输出在该数据量和并发量下的性能指标。

    14.  根据权利要求13的装置,其中所述性能指标是SQL语句的执行成本。

    15.  根据权利要求13的装置,其中所述跟踪单元被配置为以固定时间间隔跟踪SQL语句的性能指标和相关数据量、并发量。

    16.  根据权利要求13的装置,其中所述确定单元被配置为以固定时间间隔动态地从SQL语句的性能指标和相关数据量、并发量的历史数据中确定性能指标随数据量和并发量变化的趋势。

    17.  一种用于在数据库中发现低性能的SQL语句的设备,包括:
    存储器,用于存储可执行指令;以及
    处理器,用于根据所述存储器所存储的可执行指令,执行如权利要求1-4中的任意一个权利要求所述的方法所包括的操作。

    18.  一种机器可读介质,其上存储有可执行指令,当所述可执行指令被执行时,使得机器执行如权利要求1-4中的任意一个权利要求所述的方法所包括的操作。

    19.  一种用于预测SQL语句的性能的设备,包括:
    存储器,用于存储可执行指令;以及
    处理器,用于根据所述存储器所存储的可执行指令,执行如权利要求5-8中的任意一个权利要求所述的方法所包括的操作。

    20.  一种机器可读介质,其上存储有可执行指令,当所述可执行指令被执行时,使得机器执行如权利要求5-8中的任意一个权利要求所述的方法所包括的操作。

    说明书

    说明书发现低性能的SQL语句以及预测SQL语句性能的方法和装置
    技术领域
    本发明涉及数据库领域,尤其涉及一种发现低性能的SQL语句以及预测SQL语句性能的方法和装置。
    背景技术
    在例如银行运维系统的一些系统中,有时会发生超时等故障。这些故障的原因可能是一些用于查询的SQL语句性能较差。由于例如银行运维系统的一些系统中可能包含成千上万的SQL语句,找出其中性能较差的SQL语句变得很困难。
    即使数据库的性能在一段时间是可以容忍的,但很可能随着数据库中数据的增多、业务的并发处理的增多,SQL语句执行得越来越慢,最终由于资源瓶颈而导致数据库崩溃。然而,预测在未来可能会性能变差、引起数据库崩溃的SQL语句更加困难。
    发明内容
    有鉴于此,本发明一个实施例的一个目的旨在提供一种高效地在数据库中发现低性能的SQL语句的方案。
    另外,本发明另一实施例的另一目的旨在预测未来性能可能会变差的SQL语句。
    根据本发明的一个实施例,提供了一种用于在数据库中发现低性能的SQL语句的方法,包括:跟踪SQL语句的执行成本和相关成本指标;基于跟踪到的SQL语句的执行成本和相关成本指标的历史数据,预测SQL语句的成本的动态阈值,以便基于SQL语句的在特定时刻执行成本和相应的预测出的成本的阈值,发现低性能的SQL语句。
    在一种具体实现中,所述跟踪步骤包括:以固定时间间隔跟踪SQL语句的执行成本和相关成本指标。
    在一种具体实现中,所述预测步骤包括:以固定时间间隔从跟踪到的SQL语句的执行成本和相关成本指标的历史数据中预测所述成本的动态阈值。
    在一种具体实现中,所述方法还包括:响应于SQL语句的在特定时刻执行成本高于预测的在该特定时刻成本的阈值,判断该SQL语句在该特定时刻性能低。
    根据本发明的另一实施例,提供了一种用于预测SQL语句的性能的方法,包括:跟踪SQL语句的性能指标和相关数据量、并发量;基于跟踪到的SQL语句的性能指标和相关数据量、并发量的历史数据,确定性能指标随数据量和并发量变化的趋势;响应于输入的数据量和并发量,基于该性能指标随数据量和并发量变化的趋势,输出在该数据量和并发量下的性能指标。
    在一种具体实现中,所述性能指标是SQL语句的执行成本。
    在一种具体实现中,所述跟踪步骤包括:以固定时间间隔跟踪SQL语句的性能指标和相关数据量、并发量。
    在一种具体实现中,所述确定步骤包括:以固定时间间隔动态地从SQL语句的性能指标和相关数据量、并发量的历史数据中确定性能指标随数据量和并发量变化的趋势。
    根据本发明的一个实施例,提供了一种用于在数据库中发现低性能的SQL语句的装置,包括:跟踪单元,被配置为跟踪SQL语句的执行成本和相关成本指标;预测单元,被配置为基于跟踪到的SQL语句的执行成本和相关成本指标的历史数据,预测SQL语句的成本的动态阈值,以便基于SQL语句的在特定时刻执行成本和相应的预测出的成本的阈值,发现低性能的SQL语句。
    在一种具体实现中,所述跟踪单元被配置为以固定时间间隔跟踪SQL语句的执行成本和相关成本指标。
    在一种具体实现中,所述预测单元被配置为以固定时间间隔从跟踪到的SQL语句的执行成本和相关成本指标的历史数据中预测所述成本的动态阈值。
    在一种具体实现中,所述装置还包括:判断单元,被配置为响应于SQL语句的在特定时刻执行成本高于预测的在该特定时刻成本的阈值,判断该 SQL语句在该特定时刻性能低。
    根据本发明的另一实施例,提供了一种用于预测SQL语句的性能的装置,包括:跟踪单元,被配置为跟踪SQL语句的性能指标和相关数据量、并发量;确定单元,被配置为基于跟踪到的SQL语句的性能指标和相关数据量、并发量的历史数据,确定性能指标随数据量和并发量变化的趋势;输出单元,被配置为响应于输入的数据量和并发量,基于该性能指标随数据量和并发量变化的趋势,输出在该数据量和并发量下的性能指标。
    在一种具体实现中,所述性能指标是SQL语句的执行成本。
    在一种具体实现中,所述跟踪单元被配置为以固定时间间隔跟踪SQL语句的性能指标和相关数据量、并发量。
    在一种具体实现中,所述确定单元被配置为以固定时间间隔动态地从SQL语句的性能指标和相关数据量、并发量的历史数据中确定性能指标随数据量和并发量变化的趋势。
    由于本发明的实施例基于跟踪到的SQL语句的执行成本和相关成本指标的历史数据,预测SQL语句的成本的动态阈值,以便基于SQL语句的在特定时刻执行成本和相应的预测出的成本阈值,发现低性能的SQL语句,因此,它能够高效地发现低性能的SQL语句。
    另外,由于本发明的另一实施例基于跟踪到的SQL语句的性能指标和相关数据量、并发量的历史数据,确定性能指标随数据量和并发量变化的趋势,并响应于输入的数据量和并发量,输出在该数据量和并发量下的性能指标,这样,就有可能预测在未来数据库中数据增多、业务的并发处理增多的情况下可能会性能变差、引起数据库查询系统崩溃的SQL语句。
    附图说明
    本发明的其它特点、特征、优点和益处通过以下结合附图的详细描述将变得更加显而易见。
    图1示出了根据本发明一个实施例的发现低性能的SQL语句的方法的流程图。
    图2示出了根据本发明一个实施例的包括动态跟踪的SQL语句执行成本曲线、和预测出的SQL语句的执行成本的动态阈值的曲线的界面。
    图3示出了根据本发明另一实施例的用于预测SQL语句的性能的方法 的流程图。
    图4示出了根据本发明另一实施例的显示了SQL语句执行成本随数据量和并发量变化趋势、以及从输入的数据量和并发量预测在该数据量和并发量下的执行成本的界面。
    图5示出了根据本发明一个实施例的发现低性能的SQL语句的装置的框图。
    图6示出了根据本发明另一实施例的用于预测SQL语句的性能的装置的框图。
    图7示出了根据本发明一个实施例的发现低性能的SQL语句的设备的框图。
    图8示出了根据本发明另一实施例的用于预测SQL语句的性能的设备的框图。
    具体实施方式
    下面,将结合附图详细描述本发明的各个实施例。
    图1所示的方法能够用来发现低性能的SQL语句。
    执行成本是SQL语句以单块读时间为单位表示的总执行时间。它能够从数据库的快照中通过现有技术的方法得出。它是最能够体现SQL语句的性能是否良好的一个指标。但是,孤立地判断执行成本没有意义。同样的一个执行成本,在有些情况下可能是可以接受的,在有些情况下可能就变成不可接受的,因此要结合成本阈值来进行判断。本发明的实施例通过预测SQL语句的执行成本的动态的阈值,能够实时地用来发现低性能的SQL语句。
    在步骤S101中,以固定时间间隔(例如1小时)跟踪SQL语句的执行成本和相关成本指标(执行成本和相关成本指标都可以从数据库的快照中得出)。成本指标是指与成本有关的用于动态建模的其它指标,例如数据量、并发量、CPU时间等指标。数据量包括数据库数据量,例如表大小或表行数。并发量可以是SQL语句对应的业务的并发量,例如交易量;也可以是数据库的并发量,例如下列中的一个或多个:活动会话数、数据库连接数。
    可以将这些执行成本和相关成本指标记录下来,作为跟踪到的SQL语 句的执行成本和相关成本指标的历史数据。
    在步骤S102中,以固定时间间隔(例如1小时),通过机器学习,基于跟踪到的SQL语句的执行成本和相关成本指标的历史数据,预测SQL语句的成本的动态阈值。
    假设从最开始跟踪一条SQL语句,已经记录了1026次它的执行成本和相关成本指标,那么这1026次执行成本和相关成本指标的记录成为该SQL语句目前执行成本和相关成本指标的历史数据。一个小时之后,记录了1027次它的执行成本和相关成本指标,那么这1027次执行成本和相关成本指标的记录成为该SQL语句一个小时之后执行成本和相关成本指标的历史数据。这样,根据不断增多的SQL语句的执行成本和相关成本指标的历史数据,每隔一个小时预测的SQL语句的动态阈值就是变化的。
    机器学习是已有技术,因此不再赘述。它可以用于预测SQL语句的执行成本的动态阈值。
    在步骤S103中,响应于SQL语句的在特定时刻执行成本高于预测的在该特定时刻成本的阈值,判断该SQL语句在该特定时刻性能低,并产生报警。
    可以将动态跟踪的SQL语句执行成本描成一条曲线,将预测出的SQL语句的执行成本的动态阈值也描成一条曲线。这样,就可以方便地看出,在哪些时间SQL语句的执行成本高于成本阈值。图2的界面示出了动态跟踪的一条SQL语句的当天24小时的执行成本曲线、其前一天24小时的执行成本曲线、和当天24小时预测出的SQL语句的执行成本的动态阈值的曲线。从图2中可见,该SQL语句的当天24小时的执行成本曲线和其前一天24小时的执行成本曲线都低于成本阈值曲线。向用户提供这样的界面可以使用户直观地发现在哪些时间段SQL语句性能不可接受。
    其它变形
    在上述实施例中,以固定时间间隔(例如1小时)跟踪SQL语句的执行成本和相关成本指标,但本领域技术人员应当理解,在其它实施例中,也可以以例如随机的时间间隔跟踪SQL语句的执行成本和相关成本指标。
    在上述实施例中,以固定时间间隔(例如1小时)基于跟踪到的SQL语句的执行成本和相关成本指标的历史数据预测SQL语句的执行成本的动 态阈值,但本领域技术人员应当理解,在其它实施例中,也可以以例如随机的时间间隔基于跟踪到的SQL语句的执行成本和相关成本指标的历史数据预测SQL语句的执行成本的动态阈值。
    在上述实施例中,响应于SQL语句的在特定时刻执行成本高于预测的在该特定时刻成本的阈值,判断该SQL语句在该特定时刻性能低。但是,本领域技术人员应当理解,也可以设定一个0到1之间的固定系数,在SQL语句的当前执行成本高于该系数×产生的成本阈值的情况下,判断该SQL语句在该特定时刻性能低。
    在上述实施例中,在步骤S103中,响应于SQL语句的在特定时刻执行成本高于预测的在该特定时刻成本的阈值,判断该SQL语句在该特定时刻性能低。但该步骤不是必须的。也有可能仅预测SQL语句的成本的动态阈值,以便数据库管理人员警惕,防止SQL语句的执行成本超过该动态阈值,而不判断该SQL语句是否在该特定时刻性能低。
    在上述实施例中,在判断出该SQL语句在该特定时刻性能低的情况下产生报警,但本领域技术人员应当理解,也可以不产生报警。
    在上述实施例中,向用户显示如图2所示的包括动态跟踪的SQL语句执行成本曲线、和预测出的SQL语句的执行成本的动态阈值的曲线的界面,本领域技术人员应当理解,也可以不显示这样的界面。
    图3的方法能够用来预测未来低性能的SQL语句。
    在步骤S101,以固定时间间隔跟踪SQL语句的性能指标和相关数据量、并发量。性能指标是能反映SQL语句性能的指标,其包括执行成本、CPU时间、逻辑读等。
    在步骤S202,以固定时间间隔动态地从跟踪到的SQL语句的性能指标和相关数据量、并发量的历史数据中,确定性能指标随数据量和并发量变化的趋势,向用户显示。图4的右半界面显示了SQL语句的执行成本随数据量和并发量变化的趋势。
    这种确定可以采用已有的机器学习的方式执行。机器学习SQL语句的每一个记录的性能指标以及相应的数据量和并发量的历史数据,通过这种学习,确定执行成本随数据量和并发量变化的趋势。
    在步骤S203,响应于输入的数据量和并发量,基于该性能指标随数据 量和并发量变化的趋势,输出在该数据量和并发量下的性能指标。这样,假设某个SQL语句目前性能比较好,但用户想知道在未来数据库中数据增多、业务的并发处理增多的情况下它的性能如何、是否会引起数据库的故障。此时,用户输入未来可能的数据量和并发量,然后界面上会显示该数据量和并发量下的性能指标。图4的左半界面上显示了用于输入数据量和并发量、界面上显示了相应的执行成本的例子。
    其它变形
    虽然在上述实施例中,在步骤S101,以固定时间间隔跟踪SQL语句的性能指标和相关数据量、并发量,本领域技术人员应该理解,也可以以随机时间间隔跟踪SQL语句的性能指标和相关数据量、并发量。
    虽然在上述实施例中,在步骤S202,以固定时间间隔从跟踪到的SQL语句的性能指标和相关数据量、并发量的历史数据中,确定性能指标随数据量和并发量变化的趋势,本领域技术人员应当理解,也可以以随机时间间隔从跟踪到的SQL语句的性能指标和相关数据量、并发量的历史数据中确定性能指标随数据量和并发量变化的趋势。
    本领域技术人员应当理解,图3所示的方法可以与图1所示的方法结合使用。即,通过图3所示的方法,用户得知在未来可能有的数据量和并发量下某个SQL语句的执行成本后,可以结合图1所示的方法判断出的成本阈值的趋势进行分析,判断该SQL语句在这样的数据量和并发量下是否被认为是性能差的。例如,虽然图1所示的方法仅给出了历史上的成本阈值和目前的成本阈值,但通过趋势分析可以估计将来在这样的数据量和并发量下的成本阈值,然后将该SQL语句在这样的数据量和并发量下的执行成本与该成本阈值进行比较,判断该SQL语句在这样的数据量和并发量下是否性能是差的。
    另外,在上述实施例中,性能指标随数据量和并发量变化的趋势通过图4所示的界面向用户显示,本领域技术人员应当理解,也可以不向用户显示该趋势。
    另外,在上述实施例中,响应于输入的数据量和并发量输出在该数据量和并发量下的性能指标是通过界面这种方式,本领域技术人员应当理解,其也可以采用例如键盘和打印设备等其它人机接口。
    另外,汇总定期从数据库字段产生的、DBA日常用来进行SQL语句调优的AWR等报告中采集的TOP SQL语句,也有助于分析SQL语句的性能。
    现在参考图5,其示出了按照本发明一个实施例的用于在数据库中发现低性能的SQL语句的装置5的框图。图5中的各单元可以利用软件、硬件或软硬件结合的方式来实现。
    如图5所示,用于在数据库中发现低性能的SQL语句的装置5包括跟踪单元501、预测单元502。跟踪单元701被配置为跟踪SQL语句的执行成本和相关成本指标。预测单元702被配置为基于跟踪到的SQL语句的执行成本和相关成本指标的历史数据,预测SQL语句的成本的动态阈值,以便基于SQL语句的在特定时刻执行成本和相应的预测出的成本阈值,发现低性能的SQL语句。
    另外,跟踪单元501可以被配置为以固定时间间隔跟踪SQL语句的执行成本和相关成本指标。
    另外,预测单元502可以被配置为以固定时间间隔从跟踪到的SQL语句的执行成本和相关成本指标的历史数据中预测所述成本的动态阈值。
    另外,装置5还可以包括判断单元503。判断单元503被配置为响应于SQL语句的在特定时刻执行成本高于预测的在该特定时刻成本的阈值,判断该SQL语句在该特定时刻性能低。
    如图6所示,用于预测SQL语句的性能的装置6包括跟踪单元601、确定单元602、输出单元603。跟踪单元601被配置为跟踪SQL语句的性能指标和相关数据量、并发量。确定单元602被配置为基于跟踪到的SQL语句的性能指标和相关数据量、并发量的历史数据,确定性能指标随数据量和并发量变化的趋势。输出单元603被配置为响应于输入的数据量和并发量,基于该性能指标随数据量和并发量变化的趋势,输出在该数据量和并发量下的性能指标。
    另外,所述性能指标可以是SQL语句的执行成本。
    另外,跟踪单元601可以被配置为以固定时间间隔跟踪SQL语句的性能指标和相关数据量、并发量。
    另外,确定单元602可以被配置为以固定时间间隔动态地从SQL语句的性能指标和相关数据量、并发量的历史数据中确定性能指标随数据量和并发量变化的趋势。
    现在参考图7,其示出了按照本发明一个实施例的用于在数据库中发现低性能的SQL语句的设备7的示意图。如图7所示,该设备7可以包括存储器701和处理器702。存储器701可以存储可执行指令。处理器702可以根据存储器701所存储的可执行指令,实现前述装置5的各个单元所执行的操作。
    此外,本发明实施例还提供一种机器可读介质,其上存储有可执行指令,当所述可执行指令被执行时,使得机器执行处理器702所实现的操作。
    现在参考图8,其示出了按照本发明一个实施例的用于在数据库中发现低性能的SQL语句的设备8的示意图。如图8所示,该设备8可以包括存储器801和处理器802。存储器801可以存储可执行指令。处理器802可以根据存储器801所存储的可执行指令,实现前述装置6的各个单元所执行的操作。
    此外,本发明实施例还提供一种机器可读介质,其上存储有可执行指令,当所述可执行指令被执行时,使得机器执行处理器802所实现的操作。
    本领域技术人员应当理解,上面所公开的各个实施例,可以在不偏离发明实质的情况下做出各种变形和改变。因此,本发明的保护范围应当由所附的权利要求书来限定。

    关 键  词:
    发现 性能 SQL 语句 以及 预测 方法 装置
      专利查询网所有文档均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    0条评论

    还可以输入200字符

    暂无评论,赶快抢占沙发吧。

    关于本文
    本文标题:发现低性能的SQL语句以及预测SQL语句性能的方法和装置.pdf
    链接地址:https://www.zhuanlichaxun.net/p-1749466.html
    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2017-2018 zhuanlichaxun.net网站版权所有
    经营许可证编号:粤ICP备2021068784号-1