创建SQL Server性能基准监视


8

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

我的想法是:

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

因此,我试图实现的是一个可启动和可停止(也可调度)的常规性能监视,该监视将返回:

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

  2. 几个汇总的简单图形,有助于形象化长期进展。用于管理;-)

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

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

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

问题是:

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


3
一些信息你可以从布伦特奥扎尔Sp_Blitz一些参考链接在这里这里
Shanky

3
我认为简短的答案是:不。您需要花一些时间来概述基线性能所需的内容。基于该评估,您需要将查询放在一起以收集信息,并创建db对象来存储信息。除了@Shanky的建议之外,您还可以使用sp_whoisactive收集有用的信息
tommyfly

6
您还可以考虑使用第3方工具进行基线分析(最重要的是)。您建议的是重新发明别人已经完成的许多工作。不,它们不是免费的,但您的时间也不是免费的(管理层将对此有所了解)。
亚伦·伯特兰

嗨,亚伦,您能提供第三方工具
吗?

3
进入SQLSentry。我在上一份工作中确实使用过它,并且它是一种出色的工具,并且在社区中也得到了@AaronBertrand等人的大力支持:-)
Kin Shah

Answers:


8

一年多以后,我想让大家知道我的经验以及这个问题/主题的最终结果。

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

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

之后,所有数据都从那里收集到专用的监视Sql Server中,这样我就创建了一个捆绑存储,以存储有关所有服务器的性能相关信息,并将其用作调查和报告的基础。

然后,我创建了excel工作表,还使用报表服务进行了报表分析和解释。一些样本:

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

同样,我根据Fedor Georgiev 的文章“将性能数据收集到SQL Server表中 ”的启发,使用TYPEPERF配置了一些性能计数器监视。

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

这使我可以观察长期性能值,例如:

在此处输入图片说明

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

同样,收集所有记录的数据库也需要维护和性能调整,因此需要做更多的工作来保持数据的有用性...

最终完全缺少的是能够实时观察发生的事情。在最佳情况下,我将能够说出数据收集器运行后第二天可能发生的情况。而且所有细节都丢失了。我无权访问死锁图,无法查看在可疑时间范围内运行的查询的查询计划。

所有这些使我不得不向管理部门收费,以花钱购买我自己无法创建的专业解决方案。

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

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

希望您一旦遇到这个问题线程,对您来说都是有用的。

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


2
我很高兴您得出相同的结论,而且您说的很对,您的时间最好花在解决实际问题上,而不是重新发明轮子。虽然,您的车轮似乎特别闪亮:D
ConstantineK

6

以下是一些不错的文章,并提供了一些实用的示例:

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

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

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

尽管第1部分将为您提供有关基线的一些基本知识,但是在第2部分中,您可以找到有关如何使用“穷人”方法自行进行操作的信息(它是免费的,对学习有好处)

第3部分提供一些示例,说明如何通过ApexSQL Monitor建立基线以及如何使用基线来解决某些问题


4

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

以我的经验,最重要的事情不只是传达性能基准(除非有人大喊大叫,管理人员根本不在乎),而是以易于使用的格式产生一些东西,使优先级明确并能够追踪性能生产中的问题。

您可以免费使用,绝对可以增强自己的技能,并且SQL Server的工具很棒。

有了这些以及一些其他的数据库/表,作业和时间,您就可以构建一个基本的监视系统(但这不是很漂亮),这些是DBA的工具。除非您擅长BI,否则您将很难找到时间从中生产有用的业务友好型产品,尽管Ozar sp_blitz应用程序非常酷。

花了大约一年的时间做免费的事情并解决了很多问题(但并没有买很多东西)后,我才能够明确地指出,在出现重大问题之后,性能监控软件才是当务之急,我们打算购买它来吧地狱或高水。

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

我还尝试过使SQLNexus正常工作,但是最终我做了很多工作,超出了我的兴趣,这可能适合您的需求。


1

为了快速创建性能基线以获取有关不同生产sql实例的一些数据,我将免费试用第3方工具,例如Solarwinds Database Performance Analyser。



By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.