XML 실행 계획
Microsoft SQL Server에서는 다양한 방법을 사용하여 실행 계획 출력을 XML 형식으로 생성할 수 있습니다. XML 형식의 실행 계획 출력은 한 컴퓨터에서 다른 컴퓨터로 옮길 수 있으며 SQL Server를 설치하지 않은 컴퓨터에서도 표시할 수 있습니다. 또한 XPath, XQuery, XSLT, SAX, DOM 등의 XML 기술을 사용하여 XML 형식의 실행 계획 출력을 프로그래밍 방식으로 처리할 수 있습니다. SQL Server는 XPath 및 XQuery의 기본 제공 쿼리 계산 엔진을 통해 XML 실행 계획 처리를 지원합니다.
다음 방법을 사용하여 XML 실행 계획 출력을 생성할 수 있습니다.
SQL Server Management Studio의 쿼리 편집기 도구 모음에서 예상 실행 계획 표시 또는 실제 실행 계획 포함을 선택합니다.
Transact-SQL 실행 계획 SET 문 옵션인 SHOWPLAN_XML 및 STATISTICS XML을 사용합니다.
SQL Server Profiler 이벤트 클래스인 Showplan XML, Showplan XML for Query Compile 및 Showplan XML Statistics Profile을 추적하도록 선택합니다.
sys.dm_exec_query_plan 동적 관리 함수를 사용합니다.
XML 실행 계획은 sys.dm_exec_query_plan을 사용하는 경우를 제외하고 이러한 모든 방법에서 nvarchar(max) 데이터 형식으로 반환됩니다. 동적 관리 뷰를 사용하는 경우에는 XML 실행 계획이 xml 데이터 형식으로 반환됩니다.
실행 계획의 XML 스키마는 다음 위치에 있는 SQL Server 설치 파일에서 이용할 수 있습니다.
C:\Program Files\Microsoft SQL Server\100\Tools\Binn\schemas\sqlserver\2004\07\showplan\showplanxml.xsd
[!참고]
쿼리 최적화 프로그램이 쿼리 최적화를 중간에 종료한 경우 XML 실행 계획 출력의 StmtSimple 요소에 대해 StatementOptmEarlyAbortReason 특성이 반환됩니다. 이 특성에 대해 표시할 수 있는 값은 TimeOut, GoodEnoughPlanFound 및 MemoryLimitExceeded입니다. 이 특성에 대해 TimeOut 또는 GoodEnoughPlanFound가 반환되면 아무 동작도 필요하지 않습니다. 반환된 실행 계획에 올바른 결과가 포함되어 있습니다.
StatementOptmEarlyAbortReason 특성에 대해 MemoryLimitExceeded가 반환되는 경우에도 생성된 XML 실행 계획은 올바르지만 최적 값이 아닐 수 있습니다. 다음 방법 중 하나를 사용하여 사용 가능한 메모리를 늘리십시오. 1) 서버의 로드를 줄입니다. 2) SQL Server에서 사용할 수 있는 메모리를 늘립니다. 자세한 내용은 큰 데이터베이스의 메모리 관리를 참조하십시오. 3) sp_configure로 설정된 max server memory 옵션을 확인하고 값이 너무 낮은 경우 늘립니다. 자세한 내용은 서버 메모리 옵션을 참조하십시오.
실행 계획 XML 스키마 정보
실행 계획 XML 스키마의 버전 지정은 m.n과 같이 두 부분으로 구성되어 있습니다. 여기서 m은 주 버전 번호이고 n은 부 버전 번호입니다. 예를 들어 "Version 2.5"와 같이 표시됩니다. 이 버전 번호는 실행 계획 XML 스키마 문서 루트 요소에 표시됩니다. 예를 들면 다음과 같습니다. version="0.5"
실행 계획 XML 스키마의 이전 버전과의 호환성
주 버전 번호가 높으면 새 XML 실행 계획 출력이 이전 스키마에 대해 유효성을 검사하지 않습니다. 그러나 부 버전 번호가 높으면 아무런 영향이 없습니다. 예를 들어 스키마 버전 0.5로 XML 실행 계획 출력을 생성한 경우 해당 출력은 실행 계획 XML 스키마 버전 0.6에 대해 유효성을 검사합니다.
XML 실행 계획의 인코딩
SQL Server는 전송된 각 문자에 대해 2바이트를 사용하여 XML 실행 계획 출력을 유니코드 형식으로 클라이언트에 보냅니다. 인코딩 규칙은 다음과 같습니다.
If (char >= 0x0020 && char <= 0xD7FF) or (char == 0x0009) or
(char == 0x000A) or (char == 0x000D) or (char >= 0xE000 && char <= 0xFFFD)
then send the char as 2 bytes, else send '?'
탭과 줄 바꿈 문자는 다음과 같이 인코딩됩니다.
\t는 '	'로 인코딩됩니다.
\n은 '
'로 인코딩됩니다.
\r는 '
'로 인코딩됩니다.
XML 실행 계획 출력을 파일로 저장
SHOWPLAN_XML 또는 STATISTICS XML Transact-SQL SET 문을 사용하여 실행 계획 출력을 생성한 후 출력을 .sqlplan 확장명을 가진 파일로 저장할 수 있습니다. 예를 들면 MyXMLShowplan.sqlplan과 같습니다. 이러한 .sqlplan 파일은 SQL Server Management Studio에서 열고 볼 수 있습니다. 자세한 내용은 방법: XML 형식으로 실행 계획 저장을 참조하십시오.