2012-02-21 98 views
0

我有一台服务器,具有32个RAM和Intel Xeon CPU(2个2.4GHz处理器)。测试SQL Server 2008数据库

SQL Server 2008在其上运行3或4个数据库。

问题是CPU和内存已满负荷运行,我最初认为它是通过Visual Studio运行的多线程应用程序,但在关闭这些应用程序后,没有任何更改。有人建议我在SQL中进行性能测试,但我不确定这是否会给出我需要的答案。

我看着活动监视器,我可以看到哪些是昂贵的查询等,但我的问题是这些是否足够。我需要向我的主要统计数据介绍导致CPU和内存高峰的原因,并且是否足够了或者是否需要使用SQL Server Profiler并运行跟踪。任何建议感激。

+1

我不能说CPU的使用率,但SQL Server被设计为贪婪与内存 - 它*预计*消耗几乎所有它,因为它被设计为生活在服务器上。 – 2012-02-21 14:55:10

回答

1

我使用以下查询来查找我的服务器上最昂贵的查询 - 最初来自here

希望它有帮助!

SELECT DISTINCT TOP 10 t.TEXT QueryName, 
         s.execution_count AS ExecutionCount, 
         s.max_elapsed_time AS MaxElapsedTime, 
         Isnull(s.total_elapsed_time/s.execution_count, 0) AS AvgElapsedTime, 
         s.creation_time AS LogCreatedOn, 
         Isnull(s.execution_count/Datediff(s, s.creation_time, Getdate()), 0) AS FrequencyPerSec 
FROM sys.dm_exec_query_stats s 
     CROSS APPLY sys.Dm_exec_sql_text(s.sql_handle) t 
ORDER BY s.max_elapsed_time DESC 
+0

谢谢..虽然结果感到惊讶,这是基于查询花费最长的时间,什么是执行计数 – vbNewbie 2012-02-21 15:04:08

+0

我之所以问的原因是因为我有两个查询在那里,每天两次,我没有看到列表中的任何插入查询 – vbNewbie 2012-02-21 15:06:18

+0

是的,它按照它们下降的时间排序。执行计数是查询运行的次数! 由于我链接到的网站(我从最初获得查询的地方)提到,您可以重置所有计数器,并通过运行以下命令开始新的记录: 'DBCC FREEPROCCACHE'。 当然,并不是所有的查询都是这样 - 这只是前10位。如果您希望查看所有查询,可以将顶部的“TOP 10”子句更改为另一个值,或将其完全删除。 – Bridge 2012-02-21 15:07:42