Sql Server 2008性能

问题描述:

我在不同的机器上安装了2个Sql Server 2008。我在每台机器上执行相同的sql查询(从500000行的表中选择)。 第一台机器执行时间为1分9秒。在第二台机器上,这次是2:45。第二台机器上的硬件比第一台硬件要好。 为什么第二台机器的执行时间更长?也许有什么选择Sql Server的性能取决于?Sql Server 2008性能

问题可能出在硬盘上?我如何检查硬盘问题?

见下面的查询统计:

1:

Client Execution Time 16:25:21   
Query Profile Statistics    
    Number of INSERT, DELETE and UPDATE statements 0  0.0000 
    Rows affected by INSERT, DELETE, or UPDATE statements 0  0.0000 
    Number of SELECT statements 2  2.0000 
    Rows returned by SELECT statements 407354  407354.0000 
    Number of transactions 0  0.0000 
Network Statistics   
    Number of server roundtrips 3  3.0000 
    TDS packets sent from client 3  3.0000 
    TDS packets received from server 18077  18077.0000 
    Bytes sent from client 738  738.0000 
    Bytes received from server 7.403454E+07  74034540.0000 
Time Statistics   
    Client processing time 3859  3859.0000 
    Total execution time 3859  3859.0000 
    Wait time on server replies 0  0.0000 

第二:

Client Execution Time 08:21:24   
Query Profile Statistics    
    Number of INSERT, DELETE and UPDATE statements 0  0.0000 
    Rows affected by INSERT, DELETE, or UPDATE statements 0  0.0000 
    Number of SELECT statements 2  2.0000 
    Rows returned by SELECT statements 399952  399952.0000 
    Number of transactions 0  0.0000 
Network Statistics   
    Number of server roundtrips 3  3.0000 
    TDS packets sent from client 3  3.0000 
    TDS packets received from server 17833  17833.0000 
    Bytes sent from client 738  738.0000 
    Bytes received from server 7.29937E+07  72993700.0000 
Time Statistics   
    Client processing time 5688  5688.0000 
    Total execution time 5734  5734.0000 
    Wait time on server replies 46  46.0000 

可能存在物理磁盘碎片问题。在一台服务器上,数据库文件存储在连续的块/扇区中,而另一台服务器上的文件分散在所有盘片上。 (如果你的数据库在数周或数月内增长10%,达到巨大的大小,然后备份并在大多空白的磁盘上恢复,可能会发生。)

统计数据可能是过时的。索引可能不同。符合标准的记录数量可能更多。

+0

我已经在同一时间检查过(1小时前)。相同的记录数(第一个Sql Server甚至更少的行)。数据库方案是相同的(包括索引)。所以,数据库几乎是一致的。我认为这个问题可能出现在服务器设置中。 – Egor4eg 2011-02-16 14:34:15

+1

相同的行和索引并不意味着相同的统计数据。您必须检查统计信息上次更新的时间(DBCC Show_Statistics)。即便如此,SQL在保持最新状态方面通常也不错。 – 2011-02-16 14:47:10

+0

我在两台服务器上执行了DBCC Show_Statistics并且是,我有不同的结果。你能否向我解释这是什么意思,以及如何在第二台服务器上对性能进行责备? – Egor4eg 2011-02-16 15:11:08

检索两台服务器上的执行计划并查找差异。

我也猜测它与统计有关,因为它可能对最终执行计划产生很大影响。

检查两台机器上的性能监视器。检查是否有应用程序在后台运行。检查处理器的亲和力掩码。

最好的方法是比较计划。如果两者完全相同,并且实际行数相同,则可以将其解释为服务器问题。

即使它可能与网络问题有关,如果您返回大量的行。当你说硬件比第一台机器好,这意味着更好的IO系统,更多的CPU和更多的内存。

另外,两台机器上的工作负载可能不一样。