为性能分析sql server 2005数据库的最佳方法是什么?

时间:2008-10-22 15:13:52

标签: sql-server optimization profiling

您使用什么技巧?你如何找出运行时间最长的工作?有没有办法找出有问题的申请?

5 个答案:

答案 0 :(得分:5)

第1步: 安装SQL Server Performance Dashboard

步骤2: 利润。

说真的,你确实想看看那个仪表板。有关安装和使用它的更多信息,请访问here和/或here

答案 1 :(得分:3)

要识别有问题的查询,请启动Profiler,选择以下事件:

  • TSQL:BatchCompleted
  • TSQL:StmtCompleted事件
  • SP:已完成
  • SP:StmtCompleted事件

过滤输出,例如

  • 持续时间> x ms(例如100ms,主要取决于您的需求和系统类型)
  • CPU> y ms
  • 阅读> [R
  • 写作>瓦特

取决于您想要优化的内容。 确保过滤输出足以使数千个数据行滚动窗口,因为这会影响服务器性能!

将输出记录到数据库表以便以后对其进行分析很有帮助。 它还有助于并行运行Windows系统监视器以查看cpu加载,磁盘io和一些sql server性能计数器。配置sysmon以将数据保存到文件中。

您必须在数据库上获取生产典型的查询负载和数据量,才能使用分析器查看有意义的值。

从探查器获取一些输出后,您可以停止分析。

然后将分析表中存储的数据再次加载到分析器中,并使用importmenu从systemmonitor导入输出,分析器将sysmon输出与sql profiler数据相关联。这是一个非常好的功能。

在该视图中,您可以立即识别有关内存,磁盘或CPU系统的bootlenecks。

当您确定了一些想要夸大的查询时,请转到查询分析器并观察执行计划,并尝试优化索引使用和查询设计。

答案 2 :(得分:1)

在使用SQL Server 2000时,我使用SSMS或SQL事件探查器中提供的数据库调整工具取得了很好的成功。

关键是要使用一个好的样本集,跟踪一部分真正的生产工作负载,这样才能获得最佳的整体效果。

答案 3 :(得分:1)

我使用SQL Server附带的SQL Profiler。我发现的大多数性能不佳的查询都没有使用大量的CPU,但却产生了大量的磁盘IO。

我倾向于在磁盘读取上放置过滤器,并查找往往超过20,000次读取的查询。然后我查看这些查询的执行计划,这些查询通常会为您提供优化查询或所涉及表的索引所需的信息。

答案 4 :(得分:0)

我使用了一些不同的技术。

如果您尝试优化特定查询,请使用查询分析器。使用那里的工具,如显示执行计划等。

对于您不确定WHICH查询运行缓慢的情况,您可以使用的最强大的工具之一是SQL事件探查器。

只需选择您要分析的数据库,然后让它自行完成。

您需要让它运行相当长的时间(这会因应用程序的流量而异),然后您可以将结果转储到表中并开始分析它们。

您将要查看具有大量读取的查询,或占用大量CPU时间等。

优化是一种熊,但要坚持下去,最重要的是,不要假设你知道瓶颈在哪里,找到它的位置并进行修复。