호환성 수준 80에서 SQL Server 2005 데이터베이스를 실행하면 성능에 부정적인 영향을 미치나요?

StackOverflow https://stackoverflow.com/questions/7237

  •  08-06-2019
  •  | 
  •  

문제

우리 소프트웨어는 SQL Server 2000 및 2005에서 실행될 수 있어야 합니다.개발을 단순화하기 위해 우리는 호환성 수준 80에서 SQL Server 2005 데이터베이스를 실행하고 있습니다.그러나 어떤 경우에는 SQL 2000보다 SQL 2005에서 데이터베이스 성능이 더 느린 것처럼 보입니다(아직 벤치마크를 사용하여 이를 확인하지 않았습니다).호환성 수준을 90으로 업그레이드하면 SQL 2005 서버의 성능이 향상됩니까?

도움이 되었습니까?

해결책

SQL Server 2005 데이터베이스 엔진이 SQL Server 2000 엔진보다 약 30% 더 빨라야 한다는 내용을 어딘가에서 읽은 것 같습니다.이러한 이점을 얻으려면 호환성 모드 90에서 데이터베이스를 실행해야 할 수도 있습니다.

그러나 나는 mssql 2000에 비해 mssql 2005를 사용할 때 성능이 급격하게 떨어질 수 있는 두 가지 시나리오를 우연히 발견했습니다.

  1. 매개변수 스니핑:저장 프로시저를 사용할 때 SQL Server는 한 번에 정확히 하나의 실행 계획을 계산합니다. 먼저 프로시저를 호출합니다.실행 계획은 해당 호출에 제공된 매개변수 값에 따라 달라집니다.우리의 경우 일반적으로 10초 정도 소요되는 절차가 mssql 2005에서는 몇 시간 동안 실행되고 있습니다.구경하다 여기 그리고 여기.

  2. 분산 쿼리를 사용할 때 mssql 2005는 원격 서버의 정렬 순서에 대한 가정과 관련하여 다르게 동작합니다.기본 동작은 서버가 쿼리와 관련된 전체 원격 테이블을 로컬 tempdb에 복사한 다음 로컬에서 조인을 실행하는 것입니다.해결 방법은 원격 서버에서 전송되는 결과 집합을 정확하게 제어할 수 있는 OPENQUERY를 사용하는 것입니다.

다른 팁

DB를 2005년으로 옮긴 후

전체 스캔으로 통계를 업데이트하시겠습니까?인덱스를 다시 작성했나요?

먼저 시도해 본 다음 성능을 다시 확인해 보세요.

또한 참고로 호환성 수준 90을 실행하면 이전 스타일 외부 조인과 같은 일부 기능이 더 이상 지원되지 않습니다. (*= and =*)

당신은 사용하고 있습니까? 하위 선택 당신의 질문에?

내 경험에 따르면 SQL Server 2000에서 제대로 실행되는 하위 선택이 포함된 SELECT 문은 SQL Server 2005에서 크롤링할 수 있습니다(10배 정도 느릴 수 있습니다!).

실험을 해보세요. 하나의 쿼리를 다시 작성하여 하위 선택을 제거하고 성능이 어떻게 변하는지 확인하세요.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top