当前位置: 首页 > 科技观察

给SQLserver加个透视眼,你学会了吗?

时间:2023-03-18 17:21:30 科技观察

目前国内外的运维工具中,SQLSERVER工具比较少,比较喜欢简单的状态监控和一些关键指标基线告警。缺乏深入分析和发现问题的能力,也缺乏对复杂问题追根溯源的能力。所以,我们可能知道某个指标异常,但是不知道为什么会异常,是什么原因导致的,又该如何优化。虽然微软提供了一些诊断分析工具,但是这些工具使用起来太过复杂,普通人要掌握确实不容易。另外Windows本身的问题比较难分析,导致SQLSERVER这种数据库,看似好用,其实分析起来就没那么容易了。微软提供了一些基于Windows平台的分析工具,但大部分是交互式分析工具。出现问题时在线分析的能力虽然强,但使用起来太专业,不能分析历史情况,不能满足要求。运维优化的综合要求。为此,DBAIOPS社区对SQLSERVER的需求依然强烈。很多朋友认为D-SMART中SQLSERVER的监控诊断功能比Oracle等其他数据库要弱很多。我们希望我们可以在未来的版本中加强它们。经过这段时间的社区推广,我们发现SQLSERVER在政务、医疗文化、教育、制造等行业的使用率还是相当高的。对于这些客户,我们有必要对D-SMART的SQLSERVER做一些增强。前阵子社区的朋友通过Hola发来了一份SQLServer的监控数据,让我们帮忙分析一下SQL语句经常出现的执行时间抖动的问题。从月检报告中,我们发现数据库IO_COMPLETION指标异常。当时基于SQLServer的知识图谱还不完善,分析过程完全靠人工。我们花了好几个小时,发现了一个疑点。SQL语句的执行时间一直是物理内存的100%,PAGEFILE使用率接近100%。最后确定问题的主要原因是物理内存不足。如果我们使用智能诊断工具,我们可以大大简化分析过程。有了完整的知识图谱,我们就可以使用各种智能诊断工具来辅助我们发现问题。比如上面提到的问题,可以通过“指标相关性分析”工具进行分析。比如我们发现数据库的latch等待有点不正常。从《指标关联分析》的结论来看,这个指标相关的问题主要有几个IO并发量过大,最终定位问题是操作系统IO延迟过大,IO能力不足导致IO性能问题。整个分析只需要点击一下按钮,是不是很简单呢?在D-SMARTV2.1.6.20221010月度升级版本中,我们重点加强了SQLSERVER的监控和运维诊断能力。对SQLSERVER的指标进行了一些增强,新增了一些对分析诊断非常有价值的指标。此外,健康模型也进行了较大的调整,新的模型可以更好的反映SQLSERVER数据库实例的运行状态。最大的升级来自SQLServer的知识图谱,这个版本已经完成了所有指标的覆盖,所以这个版本的“智能诊断”功能才真正发挥作用。点击智能指标分析,D-SMART的智能诊断引擎可以根据知识图谱的数据,自动对当前存在的问题进行分类分析。当我们发现某个关键指标出现异常时,我们还可以使用智能诊断工具中的“关联分析”工具,非常方便地分析出可能存在的关联因素。选择指标出现问题的时间段,点击“智能指标分析”,即可选择分析工具。当我们对单个指标的异常没有头绪,不知道如何分析时,可以使用“指标相关性分析”工具,寻找与该指标波动特征较为相似的指标。这些指标很可能与本指标不同。知道如何分析的指标是关联指标。相似因子越小的指标可能相关性越强。智能诊断工具还可以通过根因分析算法,自动归纳出可能导致指标波动的问题。但是这个问题是通过关联关系推断出来的,并不是系统当前可能存在的问题。稍后将在报告中提供此分析。后续的问题分析工具会自动分析这些相关指标的异常情况,从而推断出系统可能存在的问题。最终原因是IO能力不足,诱因可能是大量SQL增加IO。智能诊断工具使用纯数学计算来分析问题,但其分析规则来自知识图谱中的专家经验。智能诊断充分利用已有的专家知识,结合异常检测算法,自动检测指标,并通过知识图谱中积累的模型自动归类根本原因,将一系列异常指标汇聚到有限的问题点上。这样一来,就好像给我们的DBA安装了一个透视眼,很容易就能看到问题现象背后的本质。当然,现在的智能诊断只是给我们提供了一双透视的眼睛,让我们更好的看到数据,帮助我们自动分析数据。它的大脑目前还不够聪明,最后一公里的分析还需要依靠人的判断。但是为我们的运维人员,尤其是三线高手,提供了一个很好的分析方向。随着新故障模型的不断积累和知识体系的优化,分析诊断能力也将不断提高。接下来我们将在DBAIOPS社区进行SQLSERVER的智能诊断测试。也希望有兴趣的朋友参与测试,并反馈测试结果给我们,完善知识库。