如何检查SQL Server数据库的性能?

时间:2011-09-10 23:11:10

标签: sql-server-2008

今天早上我重新启动了我的专用服务器。结果我的SQL Server非常敏感。我可以查询1.500.000记录表,结果在几秒内返回。

一段时间后,我看到我的CPU开始增长,并且对于相同的查询,它不再那么快30-50秒。

我检查了sp_who2,没有阻塞事务。我重建了索引。没有变化仍然缓慢

解决此类行为的最佳方法是什么?如何提高绩效?

这是我的任务经理

enter image description here

3 个答案:

答案 0 :(得分:3)

我正在嗅着内存压力问题。页面缓冲区可能已满或某些其他内存约束被命中。首先监控基本系统性能计数器,如:

  • Cpu load
  • Page fault
  • 磁盘r / w队列
  • 磁盘时间

从重新启动机器的那一刻开始捕获它们,然后使用excel或其他图形工具绘制它们。添加一些SQL计数器。如果您搜索“sql server performance monitor coutners”,那么在线有很多资源。尝试这里提到的perf计数器:http://www.sql-server-performance.com/2007/performance-monitor-general/

必须及时观察进展情况,并将其与其他指标和相关表现联系起来。

要寻找的另一件事是计划重新编译。检查Profiler跟踪中的SP:Recompile事件,看看是否与性能下降有关。 - 参考https://support.microsoft.com/en-us/kb/243586

答案 1 :(得分:2)

  • 在“服务器属性”下,您可以手动指定希望sql使用的cpu数量

enter image description here

  • 确保您已应用所有Windows更新,应用了Service Pack
  • 在不运行数据库应用程序的情况下,仅在运行SQL Server时检查正在使用的内存量
  • 最佳方法是为性能模板运行SQL事件探查器 enter image description here
  • 使用Database Tuning Advisor查看建议(http://www.youtube.com/watch?v=gjT8wL92mqE

答案 2 :(得分:0)

听起来可能是磁盘颠覆了这个问题。确保您的SQL endine配置(最大内存)小于系统上可用的(自由)。

是VM吗?数据库是否很大 - 如果它存在,SQL将继续获取内存 - 即使它的硬盘内存 - 这本身就很慢