이벤트가 튜닝되지 않는 이유
이 항목에서는 이벤트가 튜닝되지 않는 일반적인 이유와 데이터베이스 엔진 튜닝 관리자가 튜닝 이벤트를 실행할 올바른 데이터베이스를 선택하는 방법에 대해 설명합니다.
이벤트가 튜닝되지 않는 일반적인 이유
원래 이벤트를 실행한 데이터베이스가 올바르게 식별되었다고 가정하면(다음 섹션 참조) 이벤트가 튜닝되지 않는 이유는 다음과 같습니다.
튜닝하도록 선택되지 않았던 테이블을 참조합니다.
10페이지 미만으로 구성된 작은 테이블을 참조합니다.
[!참고]
Microsoft SQL Server 2000의 테이블을 구성하는 페이지 수를 찾으려면 sysindexes 시스템 테이블의 dpages 열을 사용합니다. Microsoft SQL Server 2005 이상 버전의 테이블을 구성하는 페이지 수를 찾으려면 sys.dm_db_partition_stats 카탈로그 뷰의 used_page_count 열을 사용합니다.
데이터베이스 엔진 튜닝 관리자에는 사용자가 지정한 시간 내에 쿼리를 튜닝할 충분한 시간이 없습니다.
이미 최대 인덱스 수에 근접한 테이블을 참조하고 기존 인덱스 유지 옵션이 선택되었습니다. 이 경우 해당 테이블에 인덱스를 추가할 수 없습니다.
많은 DML(데이터 조작 언어) 문(INSERT, UPDATE 및 DELETE)이 이벤트의 기본 테이블에 대해 실행됩니다. 더 많은 인덱스나 인덱싱된 뷰를 추가하면 해당 기본 테이블 성능이 저하될 수 있습니다.
다음 튜닝 옵션이 지정되었습니다.
최대 열 수가 제한됩니다.
저장소에 지정된 디스크 공간이 너무 작거나 데이터베이스에 기존 인덱스와 인덱싱된 뷰 수가 많은 경우 튜닝에 부적절한 디스크 공간이 지정되었습니다.
[!참고]
데이터베이스 엔진 튜닝 관리자 GUI(그래픽 사용자 인터페이스)의 고급 튜닝 옵션 대화 상자를 사용하거나 dta 명령줄 유틸리티를 사용할 때 -B 인수에 값을 지정하여 튜닝 권장 구성에 대한 디스크 공간 제한을 지정할 수 있습니다.
데이터베이스 엔진 튜닝 관리자에서 튜닝 이벤트에 대한 올바른 데이터베이스를 결정하는 방법
데이터베이스 엔진 튜닝 관리자는 사용할 튜닝 작업 파일 유형과 작업을 튜닝할 때 지정할 옵션에 따라 다음과 같이 튜닝 이벤트를 실행할 올바른 데이터베이스를 선택합니다.
SQL 스크립트(.sql) 튜닝 작업 파일
다음 중 하나를 사용하여 데이터베이스 이름을 지정합니다.
dta 명령줄 유틸리티의 -d 인수
XML 입력 파일의 DatabaseToConnect 요소
이러한 옵션은 데이터베이스 엔진 튜닝 관리자가 튜닝 세션을 시작할 때 첫 번째로 연결되는 기본 데이터베이스를 설정합니다. 해당 최초 데이터베이스 연결 후에 데이터베이스 엔진 튜닝 관리자는 스크립트에서 각 USE database_name 문을 사용하여 후속 문의 데이터베이스 컨텍스트를 변경합니다.
튜닝 세션에 대한 최초 데이터베이스 연결을 명시적으로 지정하지 않으면 데이터베이스 엔진 튜닝 관리자는 튜닝이 발생하는 서버에 대해 지정된 로그인에 정의되어 있는 기본 데이터베이스를 사용합니다. 해당 최초 데이터베이스 연결 후에 데이터베이스 엔진 튜닝 관리자는 최초 연결이 명시적으로 지정될 때와 같은 방법으로 후속 문의 데이터베이스 컨텍스트를 변경합니다. 데이터베이스 엔진 튜닝 관리자는 USE database_name 문을 사용하여 데이터베이스 컨텍스트를 결정합니다.
추적(.trc) 튜닝 작업 파일
추적 파일이 사용되면 데이터베이스 엔진 튜닝 관리자는 추적에 지정된 각 SPID(서버 프로세스 ID)의 이벤트를 실행할 데이터베이스를 선택합니다. 추적에 SPID가 지정되지 않으면 데이터베이스 엔진 튜닝 관리자는 해당 추적에 포함된 모든 이벤트에 동일한 SPID가 사용되는 것으로 가정합니다. 데이터베이스 엔진 튜닝 관리자는 다음과 같이 각 SPID에 대해 데이터베이스를 선택합니다.
DatabaseName이추적에 나타납니다.
DatabaseName 필드가 추적 파일에 있으면 데이터베이스 엔진 튜닝 관리자는 해당 필드를 사용하여 이벤트를 구문 분석할 데이터베이스를 결정합니다. 다른 정보는 모두 무시됩니다. DatabaseName 필드가 없으면 데이터베이스 엔진 튜닝 관리자는 2단계로 이동합니다.
DatabaseID는추적에 나타나지만 DatabaseName은나타나지 않습니다.
DatabaseID 필드가 추적 파일에 있으면 데이터베이스 엔진 튜닝 관리자는 해당 필드를 사용하여 이벤트를 구문 분석할 데이터베이스를 결정합니다. DatabaseID 필드는 데이터베이스 이름에 매핑됩니다. 그러나 데이터베이스 엔진 튜닝 관리자는 추적이 수집된 이후로 DatabaseID 필드가 변경되었는지 확인하지 않습니다. DatabaseID 대 DatabaseName 매핑이 설정되어 있는지 확실하지 않으면 추적 작업 파일에서 DatabaseID 필드를 제거합니다. 다른 정보는 모두 무시됩니다. DatabaseName과 DatabaseID가 둘 다 없으면 데이터베이스 엔진 튜닝 관리자는 3단계로 이동합니다.
DatabaseName과DatabaseID가모두 추적에 나타나지 않습니다.
추적에 DatabaseName과 DatabaseID가 둘 다 없으면 데이터베이스 엔진 튜닝 관리자는 SQL 스크립트 튜닝 작업 파일과 같은 방법으로 이벤트를 실행할 데이터베이스를 결정합니다. 이 프로세스는 이전 섹션인 SQL 스크립트(.sql) 튜닝 작업 파일에 설명되어 있습니다.