System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 基于数据库的TOP SQL数据智能管理方法及系统技术方案_技高网

基于数据库的TOP SQL数据智能管理方法及系统技术方案

技术编号:43879233 阅读:6 留言:0更新日期:2024-12-31 19:02
本发明专利技术公开了一种基于数据库的TOP SQL数据智能管理方法及系统,包括:对数据库进行监控,并从数据库的应用程序配置文件中采集TOP SQL;将所采集的TOP SQL按照时间的累计进行聚类;将聚类的TOP SQL数据根据预设的指标,存储在基线表中;对基线表中数据进行清洗,识别出全新TOP SQL和衰变TOP SQL。本发明专利技术能够快速识别全新TOP SQL和衰变TOP SQL,同时可根据数据库业务不同配置不同的阈值,对全新TOP SQL和衰变TOP SQL进行识别,且系统产生的数据存储结构设计合理,且有完善的数据清理机制,确保业务可持续稳定的运行。

【技术实现步骤摘要】

本专利技术属于数据库,涉及一种基于数据库的top sql数据智能管理方法及系统。


技术介绍

1、数据库是许多业务系统的核心组件,在日常运维过程中,用户非常关注top sql变化情况。一般情况下,每天相同时段的top sql应该是一样的,当发现top sql排行榜发生变化时,就需要引起dba的关注,但是一般客户系统中存在大量数据库,不同数据库承载的业务不同,因为对数据库的负载或者性能要求不同,支持对不同数据库进行不同的top sql分析也是非常重要的。目前对于oracle性能分析的方案一般是查看awr性能报告,但是性能报告数据指标繁多,通过人工查找,费时费力,很难快速找找有问题的sql。


技术实现思路

1、本专利技术的目的在于解决现有技术中人工查找性能报告数据费时费力,很难快速找找有问题的sql的问题,提供一种基于数据库的top sql数据智能管理方法及系统。

2、为达到上述目的,本专利技术采用以下技术方案予以实现:

3、基于数据库的top sql数据智能管理方法,包括:

4、对数据库进行监控,并从数据库的应用程序配置文件中采集top sql;

5、将所采集的top sql按照时间的累计进行聚类;

6、将聚类的top sql数据根据预设的指标,存储在基线表中;

7、对基线表中数据进行清洗,识别出全新top sql和衰变top sql。

8、本专利技术的进一步改进在于:

9、进一步的,对数据库进行监控,并从数据库的应用程序配置文件中采集top sql,具体为:在应用程序配置文件中设定固定的时间频率对位于排名前n位的top sql进行采集。

10、进一步的,将所采集的top sql按照时间的累计进行聚类,具体为:将按照固定的时间频率采集的top sql进行存储,同时将所存储的top sql按照时间频率的倍数进行聚合,得到不同的时长记录聚合数据,分别命名为:tbl_xxxxx_sqlstats1,tbl_xxxxx_sqlstats10,tbl_xxxxx_sqlstats60等,其中,xxxxx表示数据库实例唯一标识id;将同一数据库实例唯一标识id存储在同一个表中。

11、进一步的,将聚类的top sql数据根据预设的指标,存储在基线表中,具体为:将固定的时长记录聚合数据的top sql中识别预设的指标存储到基线表中,关键指标包括sql语句的唯一标识符sql_id、会话的唯一标识符con_id、累计值total、行号rn、从数据库缓冲区缓存中获取的逻辑读次数buffer_gets、sql语句的执行次数executions、sql语句执行的总耗时elapsed_time、sql执行计划的哈希值plan_hash_value、采集时间和mintop;所述mintop为每个10分钟内出现次数最多的记录。

12、进一步的,在对基线表中数据进行清洗之前,还包括:设定基线历史数据天数阈值,若基线表中的数据不超过设定的基线历史数据天数阈值,则不对基线表中的数据进行清洗。

13、进一步的,基线表中数据进行清洗,具体为:

14、步骤1:设定全新top sql查询数据时sql执行的total数量阈值和衰变top sql查询数据时sql执行的total数量阈值;

15、步骤2:当基线表中的数据超过设定的基线历史数据天数阈值;判断指定时间段内的top sql性能指标数据是否存在大于衰变top sql查询数据时sql执行的total数量阈值的top sql,如果存在;则进行步骤3;

16、步骤3:根据步骤2查询到的sql_id列表继续查询buffer_gets、executions、elapsed_time、plan_hash_value性能指标数据,对指标结果数据进行数据处理,去掉值不存在的记录,剩下的数据按照sql_id、plan_hash_value和con_id分组,分组后每两个记录计算差值并对差值进行求和,得到指定时间段内处理后的top sql性能指标数据;

17、步骤4:获取指定时间段对应的小时范围,查询同时段的基线数据,进行对比;

18、步骤5:根据步骤2查询到的sql_id列表以及步骤4得到的小时范围作为参数,查询基线中同时段重要的性能指标数据,sql_id,con_id,total,rn,buffer_gets,executions,elapsed_time,plan_hash_value,采集时间和mintop,buffer_gets_perexe,elapsed_time_perexe,如果基线数据存在,继续下一步骤,否则,则没有全新top sql/衰变top sql;

19、步骤6:指定时间段top sql的sql_id加 con_id与基线数据进行对比,如果sql_id加con_id不存在基线中且sql出现的次数大于设定全新top sql查询数据时sql执行的total数量阈值,表示该sql_id加con_id是全新top sql,否则,继续下一步骤;

20、步骤7:若步骤6中表示是衰变的top sql,则计算相同sql_id加con_id下的percent90buffergets和percent90elapsedtime,得到该sql语句的性能在大多数情况下对缓冲区的需求和执行所需的时间;其中,percent90buffergets 是一个衡量sql语句在数据库中缓冲区获取操作的指标;在所有执行该sql语句的会话中,有90%的会话所获取的缓冲区数量不超过对应的特定值;percent90elapsedtime是另一个性能分析指标,关注的是sql语句的执行时间;这个指标表示在所有执行该sql语句的会话中,有90%的会话的执行时间不超过对应的特定值;

21、步骤8:指定时间段top sql的执行计划plan_hash_value对比基线数据中的执行计划,如果不在基线中存在的表示执行计划发生变化,返回变化的执行计划列表。

22、进一步的,识别出全新top sql和衰变top sql,还包括:

23、针对每个数据库的业务情况,支持配置阈值规则,配置如下所示:

24、是否开启top sql变化监控,如果关闭,则不会进行全新top sql/衰变top sql识别 ;

25、设置时间段,未设置的时间段不会进行全新top sql/衰变top sql识别;

26、设置top sql分析范围,对位于设置的排名内的top sql进行分析变化;

27、设置top sql分析时段,表示top sql计算基线的数据范围;

28、top sql变化阈值设置,包含2个条件:

29、条件1:判断数据库负载百分比阈值、gets per exec(s)增长百分比阈值、增长量阈值是否大于各自所设定的阈值;

30、数据库负载百分本文档来自技高网...

【技术保护点】

1.基于数据库的TOP SQL数据智能管理方法,其特征在于,包括:

2.根据权利要求1所述的基于数据库的TOP SQL数据智能管理方法,其特征在于,所述对数据库进行监控,并从数据库的应用程序配置文件中采集TOP SQL,具体为:在应用程序配置文件中设定固定的时间频率对位于排名前N位的TOP SQL进行采集。

3.根据权利要求2所述的基于数据库的TOP SQL数据智能管理方法,其特征在于,所述将所采集的TOP SQL按照时间的累计进行聚类,具体为:将按照固定的时间频率采集的TOPSQL进行存储,同时将所存储的TOP SQL按照时间频率的倍数进行聚合,得到不同的时长记录聚合数据,分别命名为:tbl_xxxxx_sqlstats1,tbl_xxxxx_sqlstats10,tbl_xxxxx_sqlstats60,其中,xxxxx表示数据库实例唯一标识ID;将同一数据库实例唯一标识ID存储在同一个表中。

4.根据权利要求3所述的基于数据库的TOP SQL数据智能管理方法,其特征在于,所述将聚类的TOP SQL数据根据预设的指标,存储在基线表中,具体为:将固定的时长记录聚合数据的TOP SQL中识别预设的指标存储到基线表中,关键指标包括SQL语句的唯一标识符sql_id、会话的唯一标识符con_id、累计值total、行号rn、从数据库缓冲区缓存中获取的逻辑读次数buffer_gets、SQL语句的执行次数executions、SQL语句执行的总耗时elapsed_time、SQL执行计划的哈希值plan_hash_value、采集时间和mintop;所述mintop为每个10分钟内出现次数最多的记录。

5.根据权利要求4所述的基于数据库的TOP SQL数据智能管理方法,其特征在于,在对基线表中数据进行清洗之前,还包括:设定基线历史数据天数阈值,若基线表中的数据不超过设定的基线历史数据天数阈值,则不对基线表中的数据进行清洗。

6.根据权利要求5所述的基于数据库的TOP SQL数据智能管理方法,其特征在于,所述基线表中数据进行清洗,具体为:

7.根据权利要求6所述的基于数据库的TOP SQL数据智能管理方法,其特征在于,所述识别出全新TOP SQL和衰变TOP SQL,还包括:

8.根据权利要求7所述的基于数据库的TOP SQL数据智能管理方法,其特征在于,所述数据库负载百分比的计算方式为:

9.根据权利要求8所述的基于数据库的TOP SQL数据智能管理方法,其特征在于,所述识别出全新TOP SQL和衰变TOP SQL之后,还包括:清理过期数据;所述清理过期数据包括:设置TOP SQL基线数据保留天数、清理任务开始时间、情况任务结束时间、同时并发清理实例数、单个实例清理失败时重试次数、重试间隔、sqlstats、sqltext、sqlplan数据保留时间;当清理过期数据的指令符合所设置的条件,对过期数据进行清理。

10.基于数据库的TOP SQL数据智能管理系统,其特征在于,包括:

...

【技术特征摘要】

1.基于数据库的top sql数据智能管理方法,其特征在于,包括:

2.根据权利要求1所述的基于数据库的top sql数据智能管理方法,其特征在于,所述对数据库进行监控,并从数据库的应用程序配置文件中采集top sql,具体为:在应用程序配置文件中设定固定的时间频率对位于排名前n位的top sql进行采集。

3.根据权利要求2所述的基于数据库的top sql数据智能管理方法,其特征在于,所述将所采集的top sql按照时间的累计进行聚类,具体为:将按照固定的时间频率采集的topsql进行存储,同时将所存储的top sql按照时间频率的倍数进行聚合,得到不同的时长记录聚合数据,分别命名为:tbl_xxxxx_sqlstats1,tbl_xxxxx_sqlstats10,tbl_xxxxx_sqlstats60,其中,xxxxx表示数据库实例唯一标识id;将同一数据库实例唯一标识id存储在同一个表中。

4.根据权利要求3所述的基于数据库的top sql数据智能管理方法,其特征在于,所述将聚类的top sql数据根据预设的指标,存储在基线表中,具体为:将固定的时长记录聚合数据的top sql中识别预设的指标存储到基线表中,关键指标包括sql语句的唯一标识符sql_id、会话的唯一标识符con_id、累计值total、行号rn、从数据库缓冲区缓存中获取的逻辑读次数buffer_gets、sql语句的执行次数executions、sql语句执行的总耗时elapsed...

【专利技术属性】
技术研发人员:张梦王利成王欢
申请(专利权)人:云和恩墨北京信息技术有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1