发现低性能的sql语句以及预测sql语句性能的方法和装置的制造方法_2

文档序号:8498674阅读:来源:国知局
据库连接数。
[0037]可以将这些执行成本和相关成本指标记录下来,作为跟踪到的SQL语句的执行成本和相关成本指标的历史数据。
[0038]在步骤S102中,以固定时间间隔(例如I小时),通过机器学习,基于跟踪到的SQL语句的执行成本和相关成本指标的历史数据,预测SQL语句的成本的动态阈值。
[0039]假设从最开始跟踪一条SQL语句,已经记录了 1026次它的执行成本和相关成本指标,那么这1026次执行成本和相关成本指标的记录成为该SQL语句目前执行成本和相关成本指标的历史数据。一个小时之后,记录了 1027次它的执行成本和相关成本指标,那么这1027次执行成本和相关成本指标的记录成为该SQL语句一个小时之后执行成本和相关成本指标的历史数据。这样,根据不断增多的SQL语句的执行成本和相关成本指标的历史数据,每隔一个小时预测的SQL语句的动态阈值就是变化的。
[0040]机器学习是已有技术,因此不再赘述。它可以用于预测SQL语句的执行成本的动态阈值。
[0041]在步骤S103中,响应于SQL语句的在特定时刻执行成本高于预测的在该特定时刻成本的阈值,判断该SQL语句在该特定时刻性能低,并产生报警。
[0042]可以将动态跟踪的SQL语句执行成本描成一条曲线,将预测出的SQL语句的执行成本的动态阈值也描成一条曲线。这样,就可以方便地看出,在哪些时间SQL语句的执行成本高于成本阈值。图2的界面示出了动态跟踪的一条SQL语句的当天24小时的执行成本曲线、其前一天24小时的执行成本曲线、和当天24小时预测出的SQL语句的执行成本的动态阈值的曲线。从图2中可见,该SQL语句的当天24小时的执行成本曲线和其前一天24小时的执行成本曲线都低于成本阈值曲线。向用户提供这样的界面可以使用户直观地发现在哪些时间段SQL语句性能不可接受。
[0043]其它变形
[0044]在上述实施例中,以固定时间间隔(例如I小时)跟踪SQL语句的执行成本和相关成本指标,但本领域技术人员应当理解,在其它实施例中,也可以以例如随机的时间间隔跟踪SQL语句的执行成本和相关成本指标。
[0045]在上述实施例中,以固定时间间隔(例如I小时)基于跟踪到的SQL语句的执行成本和相关成本指标的历史数据预测SQL语句的执行成本的动态阈值,但本领域技术人员应当理解,在其它实施例中,也可以以例如随机的时间间隔基于跟踪到的SQL语句的执行成本和相关成本指标的历史数据预测SQL语句的执行成本的动态阈值。
[0046]在上述实施例中,响应于SQL语句的在特定时刻执行成本高于预测的在该特定时刻成本的阈值,判断该SQL语句在该特定时刻性能低。但是,本领域技术人员应当理解,也可以设定一个O到I之间的固定系数,在SQL语句的当前执行成本高于该系数X产生的成本阈值的情况下,判断该SQL语句在该特定时刻性能低。
[0047]在上述实施例中,在步骤S103中,响应于SQL语句的在特定时刻执行成本高于预测的在该特定时刻成本的阈值,判断该SQL语句在该特定时刻性能低。但该步骤不是必须的。也有可能仅预测SQL语句的成本的动态阈值,以便数据库管理人员警惕,防止SQL语句的执行成本超过该动态阈值,而不判断该SQL语句是否在该特定时刻性能低。
[0048]在上述实施例中,在判断出该SQL语句在该特定时刻性能低的情况下产生报警,但本领域技术人员应当理解,也可以不产生报警。
[0049]在上述实施例中,向用户显示如图2所示的包括动态跟踪的SQL语句执行成本曲线、和预测出的SQL语句的执行成本的动态阈值的曲线的界面,本领域技术人员应当理解,也可以不显示这样的界面。
[0050]图3的方法能够用来预测未来低性能的SQL语句。
[0051]在步骤S101,以固定时间间隔跟踪SQL语句的性能指标和相关数据量、并发量。性能指标是能反映SQL语句性能的指标,其包括执行成本、CPU时间、逻辑读等。
[0052]在步骤S202,以固定时间间隔动态地从跟踪到的SQL语句的性能指标和相关数据量、并发量的历史数据中,确定性能指标随数据量和并发量变化的趋势,向用户显示。图4的右半界面显示了 SQL语句的执行成本随数据量和并发量变化的趋势。
[0053]这种确定可以采用已有的机器学习的方式执行。机器学习SQL语句的每一个记录的性能指标以及相应的数据量和并发量的历史数据,通过这种学习,确定执行成本随数据量和并发量变化的趋势。
[0054]在步骤S203,响应于输入的数据量和并发量,基于该性能指标随数据量和并发量变化的趋势,输出在该数据量和并发量下的性能指标。这样,假设某个SQL语句目前性能比较好,但用户想知道在未来数据库中数据增多、业务的并发处理增多的情况下它的性能如何、是否会引起数据库的故障。此时,用户输入未来可能的数据量和并发量,然后界面上会显示该数据量和并发量下的性能指标。图4的左半界面上显示了用于输入数据量和并发量、界面上显示了相应的执行成本的例子。
[0055]其它变形
[0056]虽然在上述实施例中,在步骤S101,以固定时间间隔跟踪SQL语句的性能指标和相关数据量、并发量,本领域技术人员应该理解,也可以以随机时间间隔跟踪SQL语句的性能指标和相关数据量、并发量。
[0057]虽然在上述实施例中,在步骤S202,以固定时间间隔从跟踪到的SQL语句的性能指标和相关数据量、并发量的历史数据中,确定性能指标随数据量和并发量变化的趋势,本领域技术人员应当理解,也可以以随机时间间隔从跟踪到的SQL语句的性能指标和相关数据量、并发量的历史数据中确定性能指标随数据量和并发量变化的趋势。
[0058]本领域技术人员应当理解,图3所示的方法可以与图1所示的方法结合使用。SP,通过图3所示的方法,用户得知在未来可能有的数据量和并发量下某个SQL语句的执行成本后,可以结合图1所示的方法判断出的成本阈值的趋势进行分析,判断该SQL语句在这样的数据量和并发量下是否被认为是性能差的。例如,虽然图1所示的方法仅给出了历史上的成本阈值和目前的成本阈值,但通过趋势分析可以估计将来在这样的数据量和并发量下的成本阈值,然后将该SQL语句在这样的数据量和并发量下的执行成本与该成本阈值进行比较,判断该SQL语句在这样的数据量和并发量下是否性能是差的。
[0059]另外,在上述实施例中,性能指标随数据量和并发量变化的趋势通过图4所示的界面向用户显示,本领域技术人员应当理解,也可以不向用户显示该趋势。
[0060]另外,在上述实施例中,响应于输入的数据量和并发量输出在该数据量和并发量下的性能指标是通过界面这种方式,本领域技术人员应当理解,其也可以采用例如键盘和打印设备等其它人机接口。
[0061]另外,汇总定期从数据库字段产生的、DBA日常用来进行SQL语句调优的AWR等报告中采集的TOP SQL语句,也有助于分析SQL语句的性能。
[0062]现在参考图5,其示出了按照本发明一个实施例的用于在数据库中发现低性能的SQL语句的装置5的框图。图5中的各单元可以利用软件、硬件或软硬件结合的方式来实现。
[0063]如图5所示,用于在数据库中发现低性能的SQL语句的装置5包括跟踪单元501、预测单元502。跟踪单元701被配置为跟踪SQL语句的执行成本和相关成本指标。预测单元702被配置为基于跟踪到的SQL语句的执行成本和相关成本指标的历史数据,预测SQL语句的成本的动态阈值,以便基于SQL语句的在特定时刻执行成本和相应的预测出的成本阈值,发现低性能的SQL语句。
[0064]另外,跟踪单元501可以被配置为以固定时间间隔跟踪SQL语句的执行成本和相关成本指标。
[0065]另外,预测单元
当前第2页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1