MS SQL 2012를 실행하는 2 대의 MS SQL 서버가 있습니다. 하나는 8GB RAM, 2 프로세서 및 충분한 저장 공간이 있습니다. 다른 하나는 8 개의 프로세서, 64GB RAM, 데이터, 프로그램, 로그 및 tempdb가 분리 된 여러 첨부 드라이브가 있습니다.더 느린 컴퓨터에서 더 빠른 SQL 쿼리
대개 큰 서버는 쿼리가 빠릅니다. 그러나 간단한 쿼리에서 작은 시스템에는 10 초가 소요되고 다른 시스템에는 5 분이 소요됩니다. 우리가 결정할 수있는 한 SQL Server 설정은 동일하고 데이터는 동일하며 쿼리는 두 시스템에서 동일하며 예상 된 실행 계획과 실제 실행 계획은 두 시스템에서 동일하지만 큰 시스템은 느립니다 . Tempdb는 작은 컴퓨터의 SQL.exe와 같은 디스크에있는 하나의 파일이고 큰 컴퓨터의 SSD 드라이브에는 tempdb에 8 개의 파일이 있습니다.
큰 머신에서 작은 머신보다 쿼리가 느린 이유를 확인하기 위해 수행 할 수있는 단계는 무엇입니까?
쿼리는 다음과 같습니다
SELECT field1, field2
FROM lookuptable1
WHERE field2 <> ''
AND field1 not in (SELECT field1
FROM lookuptable2
)
우리는 작은에 큰 기계와 4 병렬 작업에 대한 16 개 스레드를 가지고있다. 쿼리는 아무런 값도 반환하지 않지만 더 큰 시스템에서는 훨씬 느립니다. 통계가 다시 작성되고 쿼리 계획이 플러시됩니다.
데이터가 동일하다고 확신하는 경우 다음 단계는 구조가 동일해야합니다 (제약 조건, 트리거, 인덱스 ...) – DrCopyPaste
흠, 실제 실행 계획이 동일하다고합니까? 다시 확인, 데이터가 동일합니다; 수동으로 쿼리를 실행하십시오 (프로파일 러를 사용하여 쿼리를 검사 했습니까?). 또한 단순히 "큰 서버"가 실행 계획이 최적 일 수 있음을 의미하지만 작은 것보다 더 많은 화재가있을 수 있지만 서버가 많이 사용되므로 조금만 기다려야 할 수 있습니다 ... – DrCopyPaste
'set statistics io on'으로 두 머신에서 실행 한 결과? 'set showplan_xml on'을 사용하면 diff 도구를보고 통찰력을 얻을 수 있습니다. –