2011-02-16 6 views
1

다른 컴퓨터에 2 대의 SQL Server 2008이 있습니다. 각 컴퓨터에서 동일한 SQL 쿼리를 실행합니다 (500000 개의 행이있는 테이블에서 선택). 첫 번째 기계 실행 시간은 1 분 9 초입니다. 두 번째 기계에서는 이번이 2:45입니다. 두 번째 시스템의 하드웨어가 첫 번째 시스템의 하드웨어보다 낫습니다. 두 번째 시스템에서 실행 시간이 더 긴 이유는 무엇입니까? 어쩌면 SQL Server 성능에 의존하는 옵션이 있습니까?Sql Server 2008 성능

HDD에있을 수 있습니까? HDD 문제는 어떻게 확인할 수 있습니까? 아래

참조 쿼리 통계 :

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 

2 일 :

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 

답변

0

실제 디스크 조각화 문제 일 수 있습니다. 한 서버에서 데이터베이스 파일은 연속적인 블록/섹터에 저장되는 반면 다른 파일에서는 플래터에 모든 파일이 흩어져 있습니다. (db를 10 % 덩어리로 몇 주 또는 몇 달에 걸쳐 엄청난 크기로 늘린 다음 백업하여 거의 빈 디스크에 복원하는 경우에 발생할 가능성이 높습니다.)

+0

두 시스템 모두에서 HDD 성능을 테스트했습니다. 2 차 기계에서 2 회 더 빨리 작업 읽기 – Egor4eg

1

통계의 유효 기간이 될 수 있습니다. 인덱싱은 다를 수 있습니다. 기준을 충족시키는 레코드 수가 더 클 수 있습니다.

+0

나는 동시에 그것을 확인하셨습니다 (1 시간 전). 동일한 레코드 수 (첫 번째 Sql Server는 더 적은 수의 행). 데이터베이스 스킴은 동일합니다 (인덱스 포함). 따라서 데이터베이스는 거의 독창적입니다. 문제는 서버 설정에있을 수 있다고 생각합니다. – Egor4eg

+1

동일한 행과 인덱스는 동일한 통계를 의미하지 않습니다. 통계가 마지막으로 업데이트 된시기를 확인해야합니다 (DBCC Show_Statistics). 그렇더라도 SQL은 대개 최신 상태로 유지하는 것이 좋습니다. –

+0

두 서버에서 모두 DBCC Show_Statistics를 실행했는데 다른 결과가 있습니다. 그게 무슨 뜻인지 설명하고 제 2의 서버에서 성능을 입증 할 수있는 방법을 설명해 주시겠습니까? – Egor4eg

0

두 서버 모두에서 실행 계획을 검색하고 차이점을 찾습니다.

최종 실행 계획에 큰 영향을 미칠 수 있기 때문에 통계와 관련이 있다고 생각합니다.

+0

실행 계획은 동일합니다. 그러나 통계는 다릅니다. – Egor4eg

+0

위의 통계를 참조하십시오. – Egor4eg

0

두 시스템의 성능 모니터를 확인하십시오. 백그라운드에서 실행중인 응용 프로그램이 있는지 확인하십시오. 프로세서의 선호도 마스크를 확인하십시오.

+0

서버가로드되지 않습니다. 친화도 마스크 란 무엇입니까? – Egor4eg

+0

http : //en.wikipedia.org/wiki/Affinity_mask –

+0

SQL Server : 개체 탐색기 -> 현재 서버 -> 속성 -> 프로세서를 마우스 오른쪽 단추로 클릭하십시오. –

1

가장 좋은 방법은 계획을 비교하는 것입니다. 둘 다 동일하고 액트 번호가 같으면 서버 문제로 리얼리티 될 수 있습니다.

많은 수의 행을 반환하는 경우에도 네트워크 문제와 관련 될 수 있습니다. 하드웨어가 더 나은 IO 시스템, 더 많은 CPU 및 더 많은 메모리를 의미하는 첫 번째 머신보다 낫다고 말하면됩니다.

또한 작업 부하가 두 시스템에서 동일하지 않을 가능성이 있습니다.