테스트 서버 사용 시 고려 사항

적용 대상:SQL Server

테스트 서버를 사용하여 프로덕션 서버에서 데이터베이스를 조정하는 것은 데이터베이스 엔진 튜닝 관리자의 중요한 이점입니다. 이 기능을 사용하면 프로덕션 서버에서 테스트 서버로 실제 데이터를 복사하지 않고도 튜닝 오버헤드를 테스트 서버로 오프로드할 수 있습니다.

참고 항목

테스트 서버 튜닝 기능은 데이터베이스 엔진 튜닝 관리자 GUI(그래픽 사용자 인터페이스)에서 지원되지 않습니다.

이 기능을 성공적으로 사용하려면 다음 섹션에 나열된 고려 사항을 검토합니다.

테스트 서버/프로덕션 서버 환경 설정

  • 테스트 서버를 사용하여 프로덕션 서버에서 데이터베이스를 조정하려는 사용자는 두 서버에 모두 있어야 합니다. 그렇지 않으면 이 시나리오가 작동하지 않습니다.

  • 확장 저장 프로시저 xp_msver 테스트 서버/프로덕션 서버 시나리오를 사용하도록 설정해야 합니다. 데이터베이스 엔진 튜닝 관리자는 이 확장 저장 프로시저를 사용하여 테스트 서버를 튜닝하는 동안 사용할 프로세서 수와 프로덕션 서버의 사용 가능한 메모리를 가져옵니다. xp_msver 사용하도록 설정되지 않은 경우 데이터베이스 엔진 튜닝 관리자는 데이터베이스 엔진 튜닝 관리자가 실행 중인 컴퓨터의 하드웨어 특성을 가정합니다. 데이터베이스 엔진 튜닝 관리자가 실행 중인 컴퓨터의 하드웨어 특성을 사용할 수 없는 경우 하나의 프로세서와 1024MB(MB)의 메모리가 있다고 가정합니다. 이 확장 저장 프로시저는 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 옵션을 적용하는 인덱싱된 뷰 삭제를 제안할 수 있습니다.

    따라서 데이터베이스 엔진 튜닝 관리자가 상관 관계 통계를 보유하는 인덱싱된 뷰에 대해 수행하는 권장 사항은 무시할 수 있습니다. 데이터베이스 엔진 튜닝 관리자는 비용을 알고 있지만 이점은 알지 못하기 때문입니다. 데이터베이스 엔진 튜닝 관리자는 날짜/시간 열에서 클러스터형 인덱스와 같은 특정 인덱스를 선택하는 것을 권장하지 않을 수 있으며, DATE_CORRELATION_OPTIMIZATION 사용하도록 설정하면 도움이 될 수 있습니다.

    뷰가 상관 관계 통계를 기반으로 하는지 확인하려면 sys.views 카탈로그 뷰의 is_date_correlation_view 열을 선택합니다.