System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种SQL故障定位方法、装置、系统及设备制造方法及图纸_技高网

一种SQL故障定位方法、装置、系统及设备制造方法及图纸

技术编号:40739819 阅读:3 留言:0更新日期:2024-03-25 20:00
本申请公开了一种SQL故障定位方法、装置、系统及设备,通过将当前执行计划结果与历史执行计划结果进行对比,从而可以直观地看出问题SQL在哪一阶段出现了故障,从而快速定位故障原因,对业务SQL进行优化,同时,本申请可应用于多种类型数据库,实用性广泛,解决了目前对执行计划的分析较为依赖专家经验,存在不确定性,且数据库结构的复杂性提高,其中数据分布及统计信息也随之变化,使得执行计划的结果更加复杂,大大增加了DBA分析解决故障的难度,降低了工作效率的技术问题。

【技术实现步骤摘要】

本申请涉及数据库处理,尤其涉及一种sql故障定位方法、装置、系统及设备。


技术介绍

1、随着社会的发展,各行各业在技术上取得了巨大的进步,尤其是大数据时代的来临,使得数据量呈现指数级增长,数据库在其中扮演着越来越重要的角色。面对愈加复杂的数据库环境,慢查询、锁等待、锁超时等数据库常见sql问题也愈加突出。

2、执行计划是数据库系统在执行sql语句时生成的一种描述执行方式和顺序的计划,它提供了有关查询如何被执行、使用哪些索引、连接方式、运行时间等信息,数据库管理员(database administrator,dba)可以利用执行计划优化查询性能、调试和诊断查询问题。

3、通过对执行计划的分析,为dba运维专家提供了一种解决慢查询等sql问题的方式,但是该过程极其地依赖经验,存在不确定性。尤其是在如今数据量飞速增长以及分布式数据库成为主流的情形下,生产环境数据库中的数据无时无刻不在变化,数据库结构的复杂性提高,其中数据分布及统计信息也随之变化,使得执行计划的结果更加复杂,大大增加了dba分析解决故障的难度,降低了工作效率。


技术实现思路

1、本申请提供了一种sql故障定位方法、装置、系统及设备,解决了目前对执行计划的分析较为依赖专家经验,存在不确定性,且数据库结构的复杂性提高,其中数据分布及统计信息也随之变化,使得执行计划的结果更加复杂,大大增加了dba分析解决故障的难度,降低了工作效率的技术问题。

2、有鉴于此,本申请第一方面提供了一种sql故障定位方法,所述方法包括:

3、s1、获取当前问题sql语句的执行计划的第一执行结果;

4、s2、获取历史执行计划表中与所述当前问题sql语句相同sql id的历史sql语句的历史执行计划的第二执行结果;

5、s3、将所述第一执行结果与所述第二执行结果进行对比,确定所述当前问题sql的故障原因。

6、可选地,所述步骤s2具体包括:

7、s21、获取历史执行计划表中与所述当前问题sql语句相同sql id的若干个第一历史sql语句;

8、s22、确定若干个所述第一历史sql语句中执行结果为执行成功且执行时间最长的第二历史sql语句;

9、s23、若所述第二历史sql语句的sql类型为非目标类型,则从所述第一历史sql语句中剔除所述第二历史sql语句并重新返回执行步骤s22;

10、s24、若所述第二历史sql语句的sql类型为目标类型,则调取所述第二历史sql语句对应的历史执行计划的第二执行结果。

11、可选地,所述步骤s24具体包括:

12、若所述第二历史sql语句的sql类型为目标类型,且当前实例中存在有目标标签的计算节点,则通过所述计算节点采集第二历史sql语句对应的历史执行计划的第二执行结果;

13、若所述第二历史sql语句的sql类型为目标类型,但当前实例中不存在有目标标签的计算节点,则通过全量sql表中的所述第二历史sql语句对应的计算节点采集历史执行计划的第二执行结果。

14、可选地,所述步骤s3具体包括:

15、将所述第一执行结果与所述第二执行结果进行对比,获取数据库前后处理所述历史sql语句以及表连接的过程数据;

16、根据所述过程数据确定所述当前问题sql的故障阶段以及故障原因。

17、本申请第二方面提供一种sql故障定位装置,所述装置包括:

18、第一获取单元,用于获取当前问题sql语句的执行计划的第一执行结果;

19、第二获取单元,用于获取历史执行计划表中与所述当前问题sql语句相同sql id的历史sql语句的历史执行计划的第二执行结果;

20、故障定位单元,用于将所述第一执行结果与所述第二执行结果进行对比,确定所述当前问题sql的故障原因。

21、可选地,所述第二获取单元具体包括:

22、获取子单元,用于获取历史执行计划表中与所述当前问题sql语句相同sql id的若干个第一历史sql语句;

23、确定子单元,用于确定若干个所述第一历史sql语句中执行结果为执行成功且执行时间最长的第二历史sql语句;

24、第一处理子单元,用于若所述第二历史sql语句的sql类型为非目标类型,则从所述第一历史sql语句中剔除所述第二历史sql语句并跳转至所述确定单元;

25、第二处理子单元,用于若所述第二历史sql语句的sql类型为目标类型,则调取所述第二历史sql语句对应的历史执行计划的第二执行结果。

26、可选地,所述第二处理子单元具体用于:

27、若所述第二历史sql语句的sql类型为目标类型,且当前实例中存在有目标标签的计算节点,则通过所述计算节点采集第二历史sql语句对应的历史执行计划的第二执行结果;

28、若所述第二历史sql语句的sql类型为目标类型,但当前实例中不存在有目标标签的计算节点,则通过全量sql表中的所述第二历史sql语句对应的计算节点采集历史执行计划的第二执行结果。

29、可选地,所述故障定位单元具体用于:

30、将所述第一执行结果与所述第二执行结果进行对比,获取数据库前后处理所述历史sql语句以及表连接的过程数据;

31、根据所述过程数据确定所述当前问题sql的故障阶段以及故障原因。

32、本申请第三方面提供一种sql故障定位系统,所述系统包括:

33、运维平台、计算节点以及系统实例;

34、所述系统实例用于对各个实例创建对应记录全量sql的全量sql表;

35、所述计算节点用于向各个数据节点下发sql语句的执行计划,接收所述sql语句的执行结果,向所述系统实例中所述sql语句对应的全量sql表中更新执行计划的执行结果;

36、所述运维平台用于执行如上述第一方面所述的sql故障定位方法的步骤。

37、本申请第四方面提供一种sql故障定位设备,所述设备包括处理器以及存储器:

38、所述存储器用于存储程序代码,并将所述程序代码传输给所述处理器;

39、所述处理器用于根据所述程序代码中的指令,执行如上述第一方面所述的sql故障定位方法的步骤。

40、从以上技术方案可以看出,本申请实施例具有以下优点:

41、本申请中,提供了一种sql故障定位方法、装置、系统及设备,通过将当前执行计划结果与历史执行计划结果进行对比,从而可以直观地看出问题sql在哪一阶段出现了故障,从而快速定位故障原因,对业务sql进行优化,同时,本申请可应用于多种类型数据库,实用性广泛,解决了目前对执行计划的分析较为依赖专家经验,存在不确定性,且数据库结构的复杂性提高,其中数据分布及统计信息也随之变化,使得执行计划的结果更加复杂,大大增加了dba分析解决故障的难度,降低了工作效本文档来自技高网...

【技术保护点】

1.一种SQL故障定位方法,其特征在于,包括:

2.根据权利要求1所述的SQL故障定位方法,其特征在于,所述步骤S2具体包括:

3.根据权利要求2所述的SQL故障定位方法,其特征在于,所述步骤S24具体包括:

4.根据权利要求1所述的SQL故障定位方法,其特征在于,所述步骤S3具体包括:

5.一种SQL故障定位装置,其特征在于,包括:

6.根据权利要求5所述的SQL故障定位装置,其特征在于,所述第二获取单元具体包括:

7.根据权利要求6所述的SQL故障定位装置,其特征在于,所述第二处理子单元具体用于:

8.根据权利要求5所述的SQL故障定位装置,其特征在于,所述故障定位单元具体用于:

9.一种SQL故障定位系统,其特征在于,包括:

10.一种SQL故障定位设备,其特征在于,所述设备包括处理器以及存储器:

【技术特征摘要】

1.一种sql故障定位方法,其特征在于,包括:

2.根据权利要求1所述的sql故障定位方法,其特征在于,所述步骤s2具体包括:

3.根据权利要求2所述的sql故障定位方法,其特征在于,所述步骤s24具体包括:

4.根据权利要求1所述的sql故障定位方法,其特征在于,所述步骤s3具体包括:

5.一种sql故障定位装置,其特征在于,包括:

6.根据权利...

【专利技术属性】
技术研发人员:王炳杰
申请(专利权)人:金篆信科有限责任公司
类型:发明
国别省市:

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

1