테스트 서버 사용 시 고려 사항
테스트 서버를 사용하여 프로덕션 서버에서 데이터베이스를 조정하는 것은 데이터베이스 엔진 튜닝 관리자 중요한 이점입니다. 이 기능을 사용하여 프로덕션 서버의 실제 데이터를 테스트 서버로 복사하지 않고도 튜닝 오버헤드를 테스트 서버에 오프로드할 수 있습니다.
참고
테스트 서버 튜닝 기능은 데이터베이스 엔진 튜닝 관리자 GUI(그래픽 사용자 인터페이스)에서 지원되지 않습니다.
이 기능을 성공적으로 사용하려면 다음 섹션에 나열된 고려 사항을 검토하십시오.
테스트 서버/프로덕션 서버 환경 설정
테스트 서버를 사용하여 프로덕션 서버의 데이터베이스를 튜닝하려는 사용자는 두 서버 모두에 존재해야 합니다. 그렇지 않으면 이 시나리오를 실행할 수 없습니다.
확장 저장 프로시저인 xp_msver는 테스트 서버/프로덕션 서버 시나리오를 사용하도록 설정해야 합니다. 데이터베이스 엔진 튜닝 관리자 이 확장 저장 프로시저를 사용하여 테스트 서버를 튜닝하는 동안 사용할 프로세서 수와 프로덕션 서버의 사용 가능한 메모리를 가져옵니다. xp_msver 사용하도록 설정되지 않은 경우 데이터베이스 엔진 튜닝 관리자 데이터베이스 엔진 튜닝 관리자 실행 중인 컴퓨터의 하드웨어 특성을 가정합니다. 데이터베이스 엔진 튜닝 관리자에서 실행 중인 컴퓨터의 하드웨어 특징을 알 수 없는 경우 프로세서는 하나이고 메모리는 1024MB라고 가정합니다. 이 확장 저장 프로시저는 SQL Server 설치할 때 기본적으로 켜져 있습니다. 자세한 내용은 노출 영역 구성 및 xp_msver(Transact-SQL)을 참조하세요.
데이터베이스 엔진 튜닝 관리자 테스트 서버와 프로덕션 서버 모두에서 SQL Server 버전이 동일할 것으로 예상합니다. 버전이 서로 다른 경우 테스트 서버의 버전이 우선 적용됩니다. 예를 들어 테스트 서버가 SQL Server Standard 실행 중인 경우 프로덕션 서버가 SQL Server Enterprise 실행 중인 경우에도 데이터베이스 엔진 튜닝 관리자 권장 사항에 인덱싱된 뷰, 분할 및 온라인 작업을 포함하지 않습니다.
테스트 서버/프로덕션 서버 동작 정보
데이터베이스 엔진 튜닝 관리자 권장 사항을 만들 때 프로덕션 서버와 테스트 서버 간의 하드웨어 차이를 고려합니다. 권장 구성은 튜닝이 프로덕션 서버에서만 수행된 경우와 동일합니다.
데이터베이스 엔진 튜닝 관리자 메타데이터를 수집하고 튜닝에 필요한 통계를 만들기 위해 프로덕션 서버에 일부 부하를 부과할 수 있습니다.
데이터베이스 엔진 튜닝 관리자 프로덕션 서버에서 테스트 서버로 실제 데이터를 복사하지 않습니다. 데이터베이스의 메타데이터와 필요한 통계만을 복사합니다.
모든 세션 정보는 프로덕션 서버의 msdb 에 저장됩니다. 따라서 튜닝에 사용할 수 있는 모든 테스트 서버를 이용할 수 있으며 모든 세션에 대한 정보를 한 곳(프로덕션 서버)에서 확인할 수 있습니다.
셸 데이터베이스와 관련된 문제점
튜닝 후 데이터베이스 엔진 튜닝 관리자 튜닝 프로세스 중에 테스트 서버에서 만든 메타데이터를 제거해야 합니다. 여기에는 셸 데이터베이스도 포함됩니다. 동일한 프로덕션 서버와 테스트 서버에서 일련의 튜닝 세션을 수행하고 있는 경우 시간을 절약하기 위해 이 셸 데이터베이스를 계속 유지할 수 있습니다. XML 입력 파일의 TuningOptions 상위 요소 아래에서 RetainShellDB 하위 요소와 다른 하위 요소를 지정합니다. 이러한 옵션을 사용하면 데이터베이스 엔진 튜닝 관리자 셸 데이터베이스를 유지합니다. 자세한 내용은 XML 입력 파일 참조(데이터베이스 엔진 튜닝 관리자)를 참조하세요.
RetainShellDB 하위 요소를 지정하지 않은 경우에도 성공적으로 수행한 테스트 서버/프로덕션 서버 튜닝 세션 후에 셸 데이터베이스가 테스트 서버에 남아 있을 수 있습니다. 필요 없는 이러한 셸 데이터베이스는 후속 튜닝 세션을 방해할 수 있으므로 다른 테스트 서버/프로덕션 서버 튜닝 세션을 수행하기 전에 삭제해야 합니다. 또한 튜닝 세션이 예기치 않게 종료되면 테스트 서버의 셸 데이터베이스와 해당 데이터베이스 내의 개체가 테스트 서버에 남아 있을 수 있습니다. 새 테스트 서버/프로덕션 서버 튜닝 세션을 시작하기 전에 이러한 데이터베이스와 개체를 삭제해야 합니다.
튜닝 프로세스와 관련된 문제점
사용자는 프로덕션 서버와 테스트 서버 간의 차이로 인해 발생하는 튜닝 오류와 메타데이터를 프로덕션 서버에서 테스트 서버로 복사할 때 발생하는 오류의 튜닝 로그를 확인해야 합니다. 예를 들어 사용자 로그인은 테스트 서버에 존재하지 않을 수도 있습니다. 사용자 로그인이 테스트 서버에 존재하지 않는 경우 해당 사용자 로그인에 의해 발생한 작업의 이벤트는 튜닝할 수 없습니다. 튜닝 로그를 보려면 데이터베이스 엔진 튜닝 관리자 GUI를 사용합니다. 자세한 내용은 데이터베이스 엔진 튜닝 관리자의 출력 보기 및 작업을 참조하세요.
데이터베이스 엔진 튜닝 관리자 테스트 서버에서 만드는 셸 데이터베이스에 개체가 없기 때문에 데이터베이스 엔진 튜닝 관리자 많은 이벤트를 튜닝할 수 없는 경우 사용자는 튜닝 로그를 검사 합니다. 튜닝할 수 없는 이벤트는 로그에 나열됩니다. 테스트 서버에서 데이터베이스를 성공적으로 튜닝하려면 사용자가 셸 데이터베이스에서 누락된 개체를 만든 다음 새 튜닝 세션을 시작해야 합니다.
동일한 이름의 데이터베이스가 테스트 서버에 이미 있는 경우 데이터베이스 엔진 튜닝 관리자 메타데이터를 복사하지 않지만 튜닝을 계속하고 필요에 따라 통계를 수집합니다. 이는 사용자가 테스트 서버에 데이터베이스를 이미 만들고 데이터베이스 엔진 튜닝 관리자 호출하기 전에 적절한 메타데이터를 복사한 경우에 유용합니다.
프로덕션 서버의 데이터베이스에 대해 DATE_CORRELATION_OPTIMIZATION 옵션이 설정되어 있는 경우 이 옵션과 연관된 메타데이터와 데이터는 테스트 서버를 튜닝하는 동안 완전히 스크립팅되지 않습니다. 테스트 서버/프로덕션 서버 시나리오에 대해 튜닝을 수행할 때 다음과 같은 문제가 적용될 수 있습니다.
사용자는 DATE_CORRELATION_OPTIMIZATION 옵션을 사용하는 쿼리를 위해 서버에 여러 쿼리 계획을 가질 수 있습니다.
데이터베이스 엔진 튜닝 관리자 권장 사항 스크립트에서 DATE_CORRELATION_OPTIMIZATION 옵션을 적용하는 인덱싱된 뷰 삭제를 제안할 수 있습니다.
따라서 상관 관계 통계를 보유하는 인덱싱된 뷰에 대해 데이터베이스 엔진 튜닝 관리자 권장 사항을 무시하는 것이 좋습니다. 데이터베이스 엔진 튜닝 관리자 비용을 알고 있지만 이점은 알지 못하기 때문입니다. 데이터베이스 엔진 튜닝 관리자 datetime 열에서 클러스터형 인덱스와 같은 특정 인덱스를 선택하지 않는 것이 좋습니다. DATE_CORRELATION_OPTIMIZATION 사용하도록 설정하면 도움이 될 수 있습니다.
뷰가 상관 관계 통계 기반인지 여부를 확인하려면 sys.views 카탈로그 뷰의 is_date_correlation_view 열을 선택합니다.