테스트 서버 사용 시 고려 사항Considerations for Using Test Servers

테스트 서버를 사용하여 프로덕션 서버의 데이터베이스를 튜닝하는 것은 데이터베이스 엔진Database Engine 튜닝 관리자의 중요한 장점입니다.Using a test server to tune a database on a production server is an important benefit of 데이터베이스 엔진Database Engine Tuning Advisor. 이 기능을 사용하여 프로덕션 서버의 실제 데이터를 테스트 서버로 복사하지 않고도 튜닝 오버헤드를 테스트 서버에 오프로드할 수 있습니다.Using this feature, you can offload tuning overhead to a test server without copying the actual data over to the test server from the production server.

참고

데이터베이스 엔진Database Engine 튜닝 관리자 GUI(그래픽 사용자 인터페이스)에서는 테스트 서버 튜닝 기능이 지원되지 않습니다.The test server tuning feature is not supported in the 데이터베이스 엔진Database Engine Tuning Advisor graphical user interface (GUI).

이 기능을 성공적으로 사용하려면 다음 섹션에 나열된 고려 사항을 검토하십시오.To use this feature successfully, review the considerations listed in the following sections.

테스트 서버/프로덕션 서버 환경 설정Setting Up the Test Server/Production Server Environment

  • 테스트 서버를 사용하여 프로덕션 서버의 데이터베이스를 튜닝하려는 사용자는 두 서버 모두에 존재해야 합니다. 그렇지 않으면 이 시나리오를 실행할 수 없습니다.The user who wants to use a test server to tune a database on a production server must exist on both servers, or this scenario will not work.

  • 확장 저장 프로시저인 xp_msver는 테스트 서버/프로덕션 서버 시나리오를 사용하도록 설정해야 합니다.The extended stored procedure, xp_msver, must be enabled to use the test server/production server scenario. 데이터베이스 엔진Database Engine 튜닝 관리자는 이 확장 저장 프로시저를 사용하여 테스트 서버를 튜닝하는 동안 사용할 프로세서 수와 프로덕션 서버의 사용 가능한 메모리를 인출합니다. Tuning Advisor uses this extended stored procedure to fetch the number of processors and the available memory of the production server to use while tuning the test server. xp_msver 을 사용할 수 없는 경우 데이터베이스 엔진Database Engine 튜닝 관리자는 데이터베이스 엔진Database Engine 튜닝 관리자를 실행하는 컴퓨터의 하드웨어 특징을 가정합니다.If xp_msver is not enabled, 데이터베이스 엔진Database Engine Tuning Advisor assumes the hardware characteristics of the computer where 데이터베이스 엔진Database Engine Tuning Advisor is running. 데이터베이스 엔진Database Engine 튜닝 관리자를 실행하는 컴퓨터의 하드웨어 특징을 알 수 없는 경우 프로세서는 하나이고 메모리는 1024MB라고 가정합니다.If the hardware characteristics of the computer where 데이터베이스 엔진Database Engine Tuning Advisor is running are not available, one processor and 1024 megabytes (MBs) of memory are assumed. 이 확장 저장 프로시저는 SQL ServerSQL Server가 설치될 때 기본적으로 튜닝됩니다.This extended stored procedure is turned on by default when you install SQL ServerSQL Server. 자세한 내용은 노출 영역 구성xp_msver(Transact-SQL)를 참조하세요.For more information, see Surface Area Configuration and xp_msver (Transact-SQL).

  • 데이터베이스 엔진Database Engine 튜닝 관리자는 테스트 서버와 프로덕션 서버의 SQL ServerSQL Server 버전이 같다고 가정합니다. to be the same on both the test server and the production server. 버전이 서로 다른 경우 테스트 서버의 버전이 우선 적용됩니다.If there are two different editions, the edition on the test server takes precedence. 예를 들어 테스트 서버에서 SQL ServerSQL Server Standard를 실행하는 경우 데이터베이스 엔진Database Engine 튜닝 관리자는 프로덕션 서버에서 SQL ServerSQL Server Enterprise를 실행하고 있어도 인덱싱된 뷰, 분할 및 온라인 작업을 권장 구성에 포함하지 않습니다.For example, if the test server is running SQL ServerSQL Server Standard, 데이터베이스 엔진Database Engine Tuning Advisor will not include indexed views, partitioning, and online operations in its recommendations even if the production server is running SQL ServerSQL Server Enterprise.

테스트 서버/프로덕션 서버 동작 정보About Test Server/Production Server Behavior

  • 데이터베이스 엔진Database Engine 튜닝 관리자는 권장 구성을 만들 때 프로덕션 서버와 테스트 서버 간의 하드웨어 차이를 고려합니다. Tuning Advisor takes into account hardware differences between the production and the test server when creating recommendations. 권장 구성은 튜닝이 프로덕션 서버에서만 수행된 경우와 동일합니다.The recommendation is the same as though the tuning was done on the production server alone.

  • 데이터베이스 엔진Database Engine 튜닝 관리자는 튜닝에 필요한 통계 작성뿐만 아니라 메타데이터 수집을 위해 프로덕션 서버에 일부 로드를 설정할 수 있습니다. Tuning Advisor may impose some load on the production server for gathering metadata as well as creation of statistics necessary for tuning.

  • 데이터베이스 엔진Database Engine 튜닝 관리자는 실제로 데이터를 프로덕션 서버에서 테스트 서버로 복사하지 않고 Tuning Advisor does not copy actual data from the production server to the test server. 데이터베이스의 메타데이터와 필요한 통계만을 복사합니다.It only copies the metadata of the databases and the necessary statistics.

  • 모든 세션 정보는 프로덕션 서버의 msdb 에 저장됩니다.All session information is stored in msdb on the production server. 따라서 튜닝에 사용할 수 있는 모든 테스트 서버를 이용할 수 있으며 모든 세션에 대한 정보를 한 곳(프로덕션 서버)에서 확인할 수 있습니다.This allows you to exploit any available test server for tuning, and information about all sessions is available in one place (the production server).

  • 튜닝 작업 후 데이터베이스 엔진Database Engine 튜닝 관리자는 튜닝 프로세스 중에 테스트 서버에서 만든 모든 메타데이터를 제거해야 합니다.After tuning, 데이터베이스 엔진Database Engine Tuning Advisor should remove any metadata that it created on the test server during the tuning process. 여기에는 셸 데이터베이스도 포함됩니다.This includes the shell database. 동일한 프로덕션 서버와 테스트 서버에서 일련의 튜닝 세션을 수행하고 있는 경우 시간을 절약하기 위해 이 셸 데이터베이스를 계속 유지할 수 있습니다.If you are performing a series of tuning sessions with the same production and test servers, you may want to retain this shell database to save time. XML 입력 파일의 TuningOptions 상위 요소 아래에서 RetainShellDB 하위 요소와 다른 하위 요소를 지정합니다.In the XML input file, specify the RetainShellDB subelement with the other sub elements under the TuningOptions parent element. 이러한 옵션을 사용하면 데이터베이스 엔진Database Engine 튜닝 관리자가 셸 데이터베이스를 유지합니다.Using these options causes 데이터베이스 엔진Database Engine Tuning Advisor to retain the shell database. 자세한 내용은 XML 입력 파일 참조(데이터베이스 엔진 튜닝 관리자)를 참조하세요.For more information, see XML Input File Reference (Database Engine Tuning Advisor).

  • RetainShellDB 하위 요소를 지정하지 않은 경우에도 성공적으로 수행한 테스트 서버/프로덕션 서버 튜닝 세션 후에 셸 데이터베이스가 테스트 서버에 남아 있을 수 있습니다.Shell databases may be left behind on the test server after a successful test server/production server tuning session even if you have not specified the RetainShellDB subelement. 필요 없는 이러한 셸 데이터베이스는 후속 튜닝 세션을 방해할 수 있으므로 다른 테스트 서버/프로덕션 서버 튜닝 세션을 수행하기 전에 삭제해야 합니다.These unwanted shell databases may interfere with subsequent tuning sessions and should be dropped before performing another test server/production server tuning session. 또한 튜닝 세션이 예기치 않게 종료되면 테스트 서버의 셸 데이터베이스와 해당 데이터베이스 내의 개체가 테스트 서버에 남아 있을 수 있습니다.In addition, if a tuning session exits unexpectedly, the shell databases on the test server and the objects within those databases may be left behind on the test server. 새 테스트 서버/프로덕션 서버 튜닝 세션을 시작하기 전에 이러한 데이터베이스와 개체를 삭제해야 합니다.You should also delete these databases and objects before starting a new test server/production server tuning session.

  • 사용자는 프로덕션 서버와 테스트 서버 간의 차이로 인해 발생하는 튜닝 오류와 메타데이터를 프로덕션 서버에서 테스트 서버로 복사할 때 발생하는 오류의 튜닝 로그를 확인해야 합니다.The user must check the tuning log for tuning errors that result from differences between the production and test servers, and for errors that result from copying metadata from the production to the test server. 예를 들어 사용자 로그인은 테스트 서버에 존재하지 않을 수도 있습니다.For example, a user login may not exist on the test server. 사용자 로그인이 테스트 서버에 존재하지 않는 경우 해당 사용자 로그인에 의해 발생한 작업의 이벤트는 튜닝할 수 없습니다.If a user login does not exist on the test server, those events in the workload that are issued by that user login may not be tunable. 데이터베이스 엔진Database Engine 튜닝 관리자 GUI를 사용하여 튜닝 로그를 볼 수 있습니다.Use the 데이터베이스 엔진Database Engine Tuning Advisor GUI to view the tuning log. 자세한 내용은 데이터베이스 엔진 튜닝 관리자의 출력 보기 및 작업을 참조하세요.For more information, see View and Work with the Output from the Database Engine Tuning Advisor

  • 데이터베이스 엔진Database Engine 튜닝 관리자가 테스트 서버에서 만든 셸 데이터베이스에 개체가 없어서 데이터베이스 엔진Database Engine 튜닝 관리자에서 많은 이벤트를 튜닝할 수 없는 경우 튜닝 로그를 확인해야 합니다.If 데이터베이스 엔진Database Engine Tuning Advisor cannot tune many events because objects are missing in the shell database that 데이터베이스 엔진Database Engine Tuning Advisor creates on the test server, the user must check the tuning log. 튜닝할 수 없는 이벤트는 로그에 나열됩니다.Events that cannot be tuned are listed in the log. 테스트 서버에서 데이터베이스를 성공적으로 튜닝하려면 사용자가 셸 데이터베이스에서 누락된 개체를 만든 다음 새 튜닝 세션을 시작해야 합니다.To successfully tune the database on the test server, the user must create the missing objects in the shell database, and then start a new tuning session.

  • 같은 이름을 가진 데이터베이스가 테스트 서버에 있는 경우 데이터베이스 엔진Database Engine 튜닝 관리자는 메타데이터를 복사하지는 않지만 튜닝 작업을 계속하고 필요한 통계를 수집합니다.If a database with the same name already exists on the test server, 데이터베이스 엔진Database Engine Tuning Advisor does not copy metadata, but continues tuning and gathers statistics as necessary. 이 기능은 사용자가 데이터베이스 엔진Database Engine 튜닝 관리자를 호출하기 전에 이미 테스트 서버에 데이터베이스를 만들고 해당 메타데이터를 복사한 경우에 유용합니다.This is useful if the user has already created a database on the test server and has copied the appropriate metadata before invoking 데이터베이스 엔진Database Engine Tuning Advisor.

  • 프로덕션 서버의 데이터베이스에 대해 DATE_CORRELATION_OPTIMIZATION 옵션이 설정되어 있는 경우 이 옵션과 연관된 메타데이터와 데이터는 테스트 서버를 튜닝하는 동안 완전히 스크립팅되지 않습니다.If the DATE_CORRELATION_OPTIMIZATION option is turned on for a database on the production server, metadata and the data associated with this option are not completely scripted while tuning the test server. 테스트 서버/프로덕션 서버 시나리오에 대해 튜닝을 수행할 때 다음과 같은 문제가 적용될 수 있습니다.When tuning is performed for a test server/production server scenario, the following issues may apply:

    • 사용자는 DATE_CORRELATION_OPTIMIZATION 옵션을 사용하는 쿼리를 위해 서버에 여러 쿼리 계획을 가질 수 있습니다.Users can have different query plans on the servers for queries that use the DATE_CORRELATION_OPTIMIZATION option.

    • 데이터베이스 엔진Database Engine 튜닝 관리자는 권장 구성 스크립트에서 DATE_CORRELATION_OPTIMIZATION 옵션을 강제 적용하는 인덱싱된 뷰의 삭제를 제안할 수 있습니다. Tuning Advisor may suggest dropping indexed views that enforce the DATE_CORRELATION_OPTIMIZATION option in the recommendation script.

      그러므로 데이터베이스 엔진Database Engine 튜닝 관리자가 해당 비용은 알지만 이점을 모르기 때문에 상관 관계 통계를 포함하는 인덱싱된 뷰에 대해 데이터베이스 엔진Database Engine 튜닝 관리자에서 제안한 권장 구성은 무시할 수 있습니다.Therefore, you may want to ignore any recommendations that 데이터베이스 엔진Database Engine Tuning Advisor makes about the indexed views that hold correlation statistics because 데이터베이스 엔진Database Engine Tuning Advisor knows their costs but not their benefits. 데이터베이스 엔진Database Engine 튜닝 관리자는 DATE_CORRELATION_OPTIMIZATION을 설정한 경우에 유용한 datetime 열의 클러스터형 인덱스와 같은 특정 인덱스의 선택을 권장하지 않을 수 있습니다. Tuning Advisor may not recommend selection of certain indexes such as clustered indexes on datetime columns, which could be beneficial when DATE_CORRELATION_OPTIMIZATION is enabled.

      뷰가 상관 관계 통계 기반인지 여부를 확인하려면 sys.views 카탈로그 뷰의 is_date_correlation_view 열을 선택합니다.To determine if a view is based on correlation statistics, select the is_date_correlation_view column of the sys.views catalog view.