튜닝 지속 시간 및 이벤트 제한
응용 프로그램이 튜닝하는 시간에 대한 제한이나 튜닝하는 이벤트 수에 대한 제한을 통해 데이터베이스 엔진 튜닝 관리자 튜닝 세션을 제어할 수 있습니다. 유지 관리 작업 시 프로덕션 서버를 튜닝해야 하는 경우 튜닝 분석 시간에 대한 제한이 유용합니다. 튜닝되는 이벤트 수에 대한 제한은 각 구성마다 동일한 작업을 튜닝하여 두 가지 가상 구성을 비교할 때 유용합니다.
데이터베이스 엔진 튜닝 관리자는 지정된 구성별 작업의 모든 이벤트를 튜닝하지 못할 수도 있습니다. 튜닝할 이벤트 수를 지정할 경우 구성별 튜닝 세션에서 동일한 수의 튜닝 가능 이벤트를 고려하도록 하여 유사한 결과가 나오도록 해야 합니다.
튜닝 지속 시간 제어
데이터베이스 엔진 튜닝 관리자는 작업을 분석하여 지정된 데이터베이스에 사용 가능한 최적의 실제 성능 구조 집합을 찾습니다. 이 작업에 소요되는 시간은 작업에 따라 다릅니다. 데이터베이스 엔진 튜닝 관리자가 수백 개의 이벤트가 포함된 작업에 대해 철저하게 분석하려면 며칠이 걸릴 수도 있습니다. 작업을 분석하는 동안에도 데이터베이스를 사용할 수는 있지만 성능은 저하될 수 있습니다.
데이터베이스 엔진 튜닝 관리자가 작업을 분석하는 기간을 제어하려면 최대 시간을 설정합니다. 최대 시간은 데이터베이스 엔진 튜닝 관리자가 작업을 분석하는 데 걸리는 시간(시간/분)입니다. 최대 시간을 설정하면 데이터베이스 엔진 튜닝 관리자가 이 시간이 만료되기 전에 생성할 수 있는 최적의 솔루션을 기반으로 하는 권장 구성이 생성됩니다.
데이터베이스 엔진 튜닝 관리자 GUI(그래픽 사용자 인터페이스)에서 이 매개 변수는 기본값 1시간으로 설정되어 있습니다. dta 명령줄 유틸리티에서 기본 제한은 8시간으로 설정되어 있습니다. 설정된 제한 시간보다 분석이 일찍 완료되되면 튜닝은 분석이 완료되자마자 종료됩니다. 무제한의 튜닝 시간을 지정하여 두 도구 인터페이스에서 모두 사용 가능한 최적의 권장 구성을 생성할 수 있습니다.
다음 하위 섹션에서는 GUI 및 명령 프롬프트로 이 튜닝 옵션을 설정하는 방법에 대해 설명합니다.
GUI로 튜닝 시간 설정
데이터베이스 엔진 튜닝 관리자 GUI에서 튜닝 옵션 탭의 튜닝 시간 제한을 선택한 다음 중지 시간 날짜 및 시간을 설정하여 튜닝 시간 제한을 설정합니다.
자세한 내용은 다음과 같습니다.
- 일반적으로 튜닝 시간을 길게 지정할수록 많은 작업을 분석할 수 있으므로 전체 결과가 좋아집니다. 권장 구성은 보다 완전한 정보를 기반으로 합니다.
- 기본적으로 최대 튜닝 제한은 1시간으로 설정되어 있습니다.
- 무제한의 튜닝 시간을 지정하려면 튜닝 시간 제한 확인란의 선택을 해제합니다.
dta 명령줄 유틸리티로 튜닝 시간 설정
dta 명령줄 유틸리티에서 -A 인수에 대한 값을 지정하여 튜닝 시간 제한을 설정할 수 있습니다. 예를 들어 다음 dta
명령을 검토합니다.
dta -E -s MySession -D AdventureWorks -if MyWorkloadScript.sql -fa IDX -A 120
여기서 -E
는 트러스트된 연결을 지정하고 -D
는 튜닝할 데이터베이스를 지정하고 -if
는 작업 파일을 지정하고 -fa IDX
는 데이터베이스 엔진 튜닝 관리자가 해당 권장 구성에서 인덱스 추가를 고려하도록 지정하고 -A 120
은 120분 내에 튜닝을 완료해야 함을 의미합니다.
dta 유틸리티를 자동 튜닝에 대한 스크립트에서 호출하지 않고 명령 프롬프트에서 실행할 때 CTRL+C를 눌러 튜닝을 중지합니다. 그런 다음 데이터베이스 엔진 튜닝 관리자는 그 시간에 소비된 작업에 따라 적용 가능한 최적의 권장 구성을 반환합니다.
자세한 내용은 다음과 같습니다.
- 일반적으로 튜닝 시간을 길게 지정할수록 많은 작업을 분석할 수 있으므로 전체 결과가 좋아집니다. 따라서 권장 구성은 보다 풍부한 정보를 기반으로 합니다.
- 튜닝 시간을 무제한으로 지정하려면 명령줄 인수 -A 0을 사용합니다. 이 인수를 사용하여 전체 작업에 대한 최적의 권장 구성을 얻을 수 있습니다.
- -A 옵션이 지정되지 않은 경우 -A 480(8시간의 튜닝 시간)을 기본값으로 설정합니다.
- Ctrl+C를 눌러도 dta 유틸리티가 종료되기 전에 분석 보고서를 채우는 데 약간의 시간이 걸릴 수 있습니다.
XML 입력 파일로 튜닝 시간 설정
또한 dta 명령줄 유틸리티에서 사용할 수 있는 XML 입력 파일로 최대 튜닝 시간 제한을 설정할 수 있습니다. XML 입력 파일로 튜닝 시간 제한(분)을 지정하려면 TuningOptions 부모 요소의 TuningTimeInMin 하위 요소를 사용합니다. XML 입력 파일에 대한 자세한 내용은 XML 입력 파일 참조(DTA)를 참조하십시오.
튜닝할 이벤트 수 제어
데이터베이스 엔진 튜닝 관리자에서 튜닝하는 작업의 이벤트 수를 제어할 수 있습니다. 이 옵션은 -n 인수를 사용하여 dta 명령줄 유틸리티에서만 사용할 수 있습니다. -n 인수가 사용될 때 dta 유틸리티 동작은 -A 인수에 지정된 값에 따라 다릅니다. 이 인수는 다음과 같이 튜닝 시간을 지정합니다.
- dta는 발생 순서에 관계없이 지정된 이벤트 수를 튜닝했거나 지정된 튜닝 시간 제한이 경과한 경우에 중지됩니다. -n 인수가 지정되지 않은 경우 기본적으로 dta는 작업의 모든 이벤트를 튜닝합니다. -A 인수가 지정되지 않은 경우 dta는 기본적으로 튜닝 제한 시간을 8시간으로 간주합니다.
- -n 인수로 지정된 이벤트 수가 튜닝되도록 하려면 -A 인수에 0을 지정합니다. 이 값은 무제한의 튜닝 시간을 지정합니다. 예를 들어 -n 250 -A 0입니다.
XML 입력 파일로 튜닝할 이벤트 수 지정
또한 dta 명령줄 유틸리티에 사용할 수 있는 XML 입력 파일로 튜닝할 이벤트 수를 지정할 수 있습니다. XML 입력 파일로 튜닝할 이벤트 수를 지정하려면 TuningOptions 상위 요소의 NumberOfEvents 하위 요소를 사용합니다. XML 입력 파일에 대한 자세한 내용은 XML 입력 파일 참조(DTA)를 참조하십시오.
튜닝되는 시간 및 이벤트 수 제한에 대한 최상의 방법
다음은 튜닝되는 시간 및 이벤트 수 제한에 대한 제안 사항입니다.
- 단일 쿼리나 소량 작업(100개 미만의 이벤트)의 경우 무제한의 튜닝 시간을 지정합니다. 무제한의 튜닝 시간을 지정하면 데이터베이스 엔진 튜닝 관리자가 최상의 권장 구성을 생성하여 대부분 경우 비교적 짧은 시간 내에 튜닝이 완료될 수 있습니다.
- 이벤트가 100개 이상인 대량 작업인 경우 나열된 순서대로 다음 옵션을 고려해 보십시오. 1-3 옵션을 먼저 고려한 후 4 옵션은 최후의 수단으로 사용합니다.
- 사용자에게 시간 제약이 있는 경우 튜닝 시간을 제한합니다.
- 고정된 수의 이벤트만 튜닝해도 충분한 경우, 예를 들어 처음 10,000개의 이벤트가 나머지 작업을 대표할 수 있는 경우 dta 명령줄 유틸리티를 통해 -n 인수를 사용하여 이벤트 수를 지정합니다.
- dta 명령줄 유틸리티를 사용하고 있고 튜닝 시간을 나중에 제한하려는 경우 -A 및 -n 인수를 모두 사용할 수 있습니다. 예를 들어 -A 240 및 -n 1000을 지정하면 데이터베이스 엔진 튜닝 관리자는 발생 순서에 관계없이 1000개의 이벤트가 튜닝되거나 4시간이 경과하자마자 튜닝을 중지합니다.
- 튜닝에 소요되는 시간은 쿼리의 복잡성(참조된 테이블 수), 선택된 기능 집합(인덱싱된 뷰 튜닝은 인덱스 튜닝보다 더 많은 시간이 소요됨) 및 데이터 크기(통계 산출의 경우)에 따라 다릅니다. 대부분의 경우 데이터베이스 엔진 튜닝 관리자가 튜닝할 때 쿼리 최적화 프로그램을 호출하는 데 많은 시간이 소요됩니다. 데이터베이스 엔진 튜닝 관리자가 튜닝하는 데 소요되는 적절한 시간에 대한 간단한 기준은 다음과 같습니다.
1개에서 3개의 테이블을 참조하는 간단한 쿼리에서는 인덱스만 튜닝하는 경우 쿼리당 약 1초가 소요되고 인덱스와 인덱싱된 뷰를 튜닝하는 경우 쿼리당 약 10초가 소요됩니다. 4개 이상의 테이블을 참조하는 복잡한 쿼리에서는 인덱스만 튜닝하는 경우 쿼리당 약 10초가 소요되고 인덱스와 인덱싱된 뷰를 튜닝하는 경우 쿼리당 100초가 소요됩니다.
- 데이터베이스 엔진 튜닝 관리자가 100%의 작업이 사용되었음을 표시하는 경우 전체 작업이 구문 분석되지만 반드시 튜닝되는 것은 아닙니다. 전체 작업이 튜닝되었는지 확인하려면 튜닝 로그 끝 부분에서 다음 메시지를 검색합니다.
"작업의 일부 이벤트가 평가되지 않았습니다. (1) DTAShell의 튜닝 옵션 화면에서 튜닝 시간을 제한하거나, (2) DTA 명령줄에서 -A 옵션을 사용하거나, (3) DTA에 대한 입력 XML에 있는 <TuningOptions> 아래에서 <TuningTimeInMin>을 사용하여 시간 범위를 늘리십시오."
이러한 메시지가 튜닝 로그에 있는 경우 데이터베이스 엔진 튜닝 관리자가 전체 작업을 튜닝할 수 없습니다. 이 문제를 해결하려면 튜닝 시간을 길게 지정합니다. 무제한의 튜닝 시간을 지정하면 작업의 모든 이벤트를 튜닝할 수 있습니다. 무제한의 튜닝 시간을 지정하지 않으면 데이터베이스 엔진 튜닝 관리자는 지정된 튜닝 시간 내에 가능한 한 많은 수의 이벤트를 튜닝하려고 합니다.
- 사용자에게 시간 제약이 있는 경우 튜닝 시간을 제한합니다.
- 고정된 수의 이벤트만 튜닝해도 충분한 경우, 예를 들어 처음 10,000개의 이벤트가 나머지 작업을 대표할 수 있는 경우 dta 명령줄 유틸리티를 통해 -n 인수를 사용하여 이벤트 수를 지정합니다.
- dta 명령줄 유틸리티를 사용하고 있고 튜닝 시간을 나중에 제한하려는 경우 -A 및 -n 인수를 모두 사용할 수 있습니다. 예를 들어 -A 240 및 -n 1000을 지정하면 데이터베이스 엔진 튜닝 관리자는 발생 순서에 관계없이 1000개의 이벤트가 튜닝되거나 4시간이 경과하자마자 튜닝을 중지합니다.
- 튜닝에 소요되는 시간은 쿼리의 복잡성(참조된 테이블 수), 선택된 기능 집합(인덱싱된 뷰 튜닝은 인덱스 튜닝보다 더 많은 시간이 소요됨) 및 데이터 크기(통계 산출의 경우)에 따라 다릅니다. 대부분의 경우 데이터베이스 엔진 튜닝 관리자가 튜닝할 때 쿼리 최적화 프로그램을 호출하는 데 많은 시간이 소요됩니다. 데이터베이스 엔진 튜닝 관리자가 튜닝하는 데 소요되는 적절한 시간에 대한 간단한 기준은 다음과 같습니다.
1개에서 3개의 테이블을 참조하는 간단한 쿼리에서는 인덱스만 튜닝하는 경우 쿼리당 약 1초가 소요되고 인덱스와 인덱싱된 뷰를 튜닝하는 경우 쿼리당 약 10초가 소요됩니다. 4개 이상의 테이블을 참조하는 복잡한 쿼리에서는 인덱스만 튜닝하는 경우 쿼리당 약 10초가 소요되고 인덱스와 인덱싱된 뷰를 튜닝하는 경우 쿼리당 100초가 소요됩니다.
참고 데이터베이스 엔진 튜닝 관리자의 -A 및 -n 인수와 Microsoft SQL Server 2000 인덱스 튜닝 마법사의 빠름, 보통, 정밀 모드 간에 직접적인 매핑이 없습니다. 일반적으로 SQL Server 2000에서 특정 모드(빠름, 보통 또는 정밀)로 튜닝하는 데 일정 시간이 걸린 경우 대개 동일한 시간을 들이면 데이터베이스 엔진 튜닝 관리자에 이에 필적하거나 더 나은 권장 구성이 제공됩니다. 정밀 모드의 사용자는 데이터베이스 엔진 튜닝 관리자를 사용하여 무제한의 튜닝 시간과 무제한의 이벤트 수로 작업을 튜닝하는 것이 좋습니다.
튜닝 지속 시간을 제한하는 다른 방법
데이터베이스 엔진 튜닝 관리자의 실행 시간을 제한할 뿐 아니라 데이터베이스에 있는 테이블의 하위 집합만 튜닝할 수 있습니다.
사용할 수 있는 옵션은 다음과 같습니다.
- 기존의 모든 물리적 디자인 구조(PDS) 유지
- 인덱스만 유지
- 클러스터형 인덱스만 유지
데이터베이스 엔진 튜닝 관리자는 인덱스가 테이블에 적합하지 않아도 최종 권장 구성에 인덱스 힌트 또는 쿼리 힌트를 포함시킵니다. 쿼리에서 참조된 다른 테이블에 대한 인덱스를 제안하거나 권장할 수 있습니다. 그러나 힌트로 지정된 모든 인덱스는 항상 최종 권장 구성에 속합니다. 힌트로 인해 데이터베이스 엔진 튜닝 관리자가 더 나은 실행 계획을 선택하지 못하게 될 수도 있습니다. 작업을 분석하기 전에 쿼리에서 인덱스 힌트를 제거하십시오.
참고 항목
개념
물리적 디자인 구조 지정
권장 디스크 공간 제한
튜닝 옵션 선택에 대한 시나리오
지원되지 않는 튜닝 옵션