创建 SQL Server 性能基线监控

Mag*_*ier 8 performance monitoring sql-server

为了获得概览和可比较的数据,我当前的任务是创建一个性能基线,以获取有关不同生产 SQL Server 实例的一些数据。

我的想法是:

  • 我想使用几个 DMV
  • 我想包括一个探查器跟踪(包括执行计划)
  • 我想包括性能数据

所以我试图实现的是一个通用的性能监控可启动和可停止(也可调度)返回:

  1. 确定正在进行的性能优化任务是否成功所需的所有信息

  2. 几个汇总的简单数字有助于形象化长期进展……尤其是。用于管理;-)

  3. 探查器跟踪中的可重新执行执行计划,以通过索引优化任务比较各个队列的更改和改进

我发现了一些描述性能基线创建的信息。它们中的大多数要么非常复杂,要么只关注所需的性能指标之一(主要是性能数据)。

最匹配的示例/描述如下:为 SQL Server 创建性能基准

问题是:

有没有人有以快速可行的方式创建这种性能监视器的经验?

Mag*_*ier 8

一年多后我想让大家知道我的经历和这个问题/话题的最终结果。

我开始自己创造东西。最初,我按照Tim Ford的文章收集并使用 CMV 存储历史 SQL Server 性能计数器数据来获得一些东西,并使用我想要收集的任何数据对其进行扩展。因此,我每天一次在每个 Sql Server 上运行几个存储过程,这些过程从 DMV 收集一些特定信息并将结果存储在数据库内的本地服务器上。这包括索引使用、缺失索引、特定日志条目(如自动增长)、服务器设置、应用程序数据库设置、碎片、作业执行、事务日志信息、文件信息、等待统计等。

此外,我将 Brent Ozar 的 sp_blitz 定期执行结果添加到此存储库中,以收集其他有价值的指示以进行工作、改进和报告。

所有数据稍后从那里收集到专用监控 Sql Server 中,通过这种方式,我创建了一个捆绑存储,用于存储所有服务器的性能相关信息,并将其用作调查和报告的基础。

然后我创建了 Excel 表格,还使用报告服务来分析和解释报告。一些示例:

在此处输入图片说明 在此处输入图片说明 在此处输入图片说明

此外,我使用 TYPEPERF 配置了一些性能计数器监控,其灵感来自Fedor Georgiev的文章“将性能数据收集到 SQL Server 表中”。

从我的 SQL Monitoring 实例中,我触发 typeperf 以运行和收集具有可配置样本间隔的可配置数量的样本,并将结果存储在我的中央监控数据库中。

这使我能够观察长期性能值,示例:

在此处输入图片说明

使用它来收集基线信息一段时间后,发现必须花费大量的维护工作来查看失败的作业、调试程序(例如,如果数据库脱机,一些脚本失败),更换服务器后维护设置...

此外,收集所有记录的数据库本身需要维护和性能调优,因此需要额外的工作来保持数据有用......

最终完全缺少的是查看实时发生的事情的能力。在最好的情况下,我将能够在数据收集器运行后的第二天判断可能发生的情况。也缺少所有细节。我无权访问死锁图,我无法查看在可疑时间范围内运行的查询的查询计划......

所有这些都让我向管理层收费,让我花钱购买一个我自己无法创建的专业解决方案。

最后的选择是购买 SentryOne,因为与其他产品相比,它具有说服力,并提供了识别我们痛点所需的大量信息。

作为最后的结论,我会建议任何寻找类似问题答案的人不要尝试自己创造东西,只要你没有一个小而基本健康的环境。如果您有几个系统和很多问题,最好立即寻求专业的解决方案并使用供应商的帮助解决您的问题,而不是花费大量时间和金钱来创建一些不太有用的东西。不过,这条路线还是很有趣的,让我学到了很多不想错过的东西。

我希望您在遇到此问题线程后会发现这很有用。

2017 年 4 月 20 日编辑: Brent Ozar 最近在 facebook 上发布了以下文章,这是 SQL Tiger 团队采用的一种类似方法:https : //blogs.msdn.microsoft.com/sql_server_team/sql-server-performance-baselining -报告-释放-用于-企业-监控/

  • 我很高兴你得出了同样的结论,你完全正确,你的时间最好花在解决实际问题上,而不是重新发明轮子。不过你的轮子看起来特别闪亮:D (2认同)

Con*_*neK 6

作为一名刚刚崭露头角的 DBA,我已经运行了各种免费工具,并在付费空间(DPA、SQL Sentry 和 Foglight)中进行了一些实验,这实际上取决于您想要该工具的用途。

根据我的经验,最重要的事情不仅仅是传达绩效基线(管理层根本不在乎,除非有人可以大喊大叫),而是以易于使用的格式制作一些东西,使优先级明确并能够跟踪绩效生产中的问题。

您绝对可以通过免费途径来增强您的技能,而且 SQL Server 的工具非常棒。

有了这些和一些额外的数据库/表以及作业和时间,您可以构建一个基本的监控系统(但它并不漂亮),这些是 DBA 的工具;除非您擅长 BI 内容,否则您将很难找到时间从中生成有用的商业友好内容,尽管 Ozar sp_blitz 应用程序非常酷。

在花了大约一年的时间做免费的事情并解决了大量的问题(但没有得到太多的支持)后,我能够明确表示,在出现重大问题后,性能监控软件是一个优先事项,我们打算购买它无论地狱还是高水位。

在演示了前面提到的客户端之后,我选择了 DPA,因为管理人员可以轻松使用结果,尽管我确实拥有 SQL Sentry Plan Explorer Pro 的客户端许可证(1000% 物有所值)并且非常喜欢使用服务器版本,但它只是没有抓住它们一样的方法。

我也曾尝试让 SQLNexus 工作,但最终我的工作量超出了我的兴趣,它可能适合您的需求。


Nik*_*laD 6

以下是一些带有一些实际示例的好文章,您可以在此处找到:

如何使用基线检测 SQL Server 性能问题 – 第 1 部分 – 简介

如何使用基线检测 SQL Server 性能问题 – 第 2 部分 – 收集指标和报告

如何使用基线检测 SQL Server 性能问题 - 第 3 部分

虽然第 1 部分将为您提供有关基线是什么的一些基本知识,但在第 2 部分中,您可以找到有关如何使用“穷人”方法自行完成的信息(免费且适合学习)

第 3 部分提供了一些关于如何建立基线以及如何使用基线通过 ApexSQL Monitor 对某些问题进行故障排除的示例