그래픽 실행 계획 표시(SQL Server Management Studio)
SQL Server Management Studio는 데이터베이스 관리자나 개발자가 쿼리를 작성하고 여러 개의 쿼리를 동시에 실행하고 결과를 보고 쿼리 계획을 분석하며 쿼리 성능 향상을 위한 지원을 받을 수 있게 해주는 대화형 그래픽 도구입니다. 실행 계획 옵션은 SQL Server 쿼리 최적화 프로그램에서 선택한 데이터 검색 방법을 그래픽으로 표시합니다. 그래픽 실행 계획에서는 Transact-SQL SET 문 옵션 SET SHOWPLAN_ALL이나 SET SHOWPLAN_TEXT로 생성되는 테이블 형식 표현 대신 아이콘을 사용하여 SQL 서버의 특정 문과 쿼리 실행을 나타내거나 SET SHOWPLAN_XML로 생성되는 표현에 XML을 사용합니다. 그래픽 표시는 쿼리의 성능 특징을 이해하는 데 아주 유용합니다. SQL Server Management Studio를 사용하면 누락된 통계가 표시되어 쿼리 최적화 프로그램을 통해 조건자 선택도를 예측한 다음 누락된 해당 통계를 쉽게 만들 수 있습니다.
[!참고]
암호화된 저장 프로시저나 트리거에 대해서는 실행 계획이 표시되지 않습니다.
실행 계획 옵션 사용
분석할 쿼리가 포함된 Transact-SQL 스크립트를 Management Studio 쿼리 편집기에 열거나 입력합니다. 스크립트가 Management Studio 쿼리 편집기에 로드되면 쿼리 편집기 도구 모음에서 예상 실행 계획 표시 단추나 실제 실행 계획 포함 단추를 클릭하여 예상 실행 계획이나 실제 실행 계획을 표시하도록 선택할 수 있습니다. 예상 실행 계획 표시를 클릭하면 스크립트 구문이 분석되고 예상 실행 계획이 생성됩니다. 실제 실행 계획 포함을 클릭할 경우 실행 계획이 생성되기 전에 스크립트를 실행해야 합니다. 스크립트가 구문 분석되거나 실행된 후에 실행 계획 탭을 클릭하여 실행 계획 출력 내용을 그래픽으로 확인합니다.
Management Studio에서 그래픽 실행 계획 기능을 사용하고 실행 계획 Transact-SQL SET 문 옵션을 사용하려면 사용자에게 Transact-SQL 문과 쿼리를 실행하는 데 충분한 사용 권한이 있어야 합니다. 또한 참조된 개체가 포함된 모든 데이터베이스에 대해 SHOWPLAN 권한이 사용자에게 있어야 합니다. 자세한 내용은 Showplan 보안을 참조하십시오.
그래픽 실행 계획 출력 읽기
실행 계획을 보려면 결과 창에서 실행 계획 탭을 클릭합니다. SQL Server Management Studio의 그래픽 실행 계획 출력은 오른쪽에서 왼쪽으로, 위에서 아래로 읽습니다. 일괄 처리의 총 비용에 대한 비율로 각 쿼리 비용을 포함하여 일괄 처리에서 분석되는 각 쿼리가 표시됩니다. Management Studio에 실행 계획을 표시하는 데 사용되는 아이콘에 대한 자세한 내용은 그래픽 실행 계획 아이콘(SQL Server Management Studio)을 참조하십시오.
다음 설명에는 Management Studio의 그래픽 실행 출력을 해석하기 위한 지침이 있습니다.
트리 구조의 각 노드는 쿼리나 문의 해당 부분을 실행하는 데 사용되는 논리 및 물리 연산자를 지정하는 아이콘으로 표시됩니다.
각 노드는 부모 노드에 관련됩니다. 같은 부모를 가진 자식 노드는 같은 열에 만들어집니다. 그러나 같은 열에 있는 모든 노드가 반드시 같은 부모를 가질 필요는 없습니다. 화살촉이 있는 규칙은 각 노드를 해당 부모에 연결합니다.
연산자는 특정 부모에 관련된 기호로 표시됩니다.
화살표 너비는 행 수에 비례합니다. 사용 가능한 경우 실제 행 수가 사용됩니다. 그렇지 않으면 예상 행 수가 사용됩니다.
쿼리에 문이 여러 개 있으면 여러 개의 쿼리 실행 계획이 만들어집니다.
트리 구조의 일부는 실행되는 문의 유형에 의해 결정됩니다.
CPU가 여러 개인 병렬 쿼리의 경우 그래픽 실행 계획에 있는 각 노드의 속성에 사용된 운영 체제 스레드에 대한 정보가 표시됩니다. 노드의 속성을 보려면 노드를 마우스 오른쪽 단추로 클릭한 다음 속성을 클릭합니다. 병렬 쿼리에 대한 자세한 내용은 병렬 쿼리 처리를 참조하십시오.
문 유형
트리 구조 요소
Transact-SQL 및 저장 프로시저
문이 저장 프로시저 또는 Transact-SQL 문일 경우 해당 문은 그래픽 실행 계획 트리 구조의 루트가 됩니다. 저장 프로시저에는 저장 프로시저가 호출하는 문을 나타내는 자식이 여러 개 있을 수 있습니다. 각 자식은 트리의 노드이거나 분기입니다.
데이터 조작 언어(DML)
SQL Server 쿼리 최적화 프로그램에 의해 분석된 문이 SELECT, INSERT, DELETE, UPDATE와 같은 DML 문인 경우에는 DML 문이 트리의 루트가 됩니다. DML 문에는 자식이 두 개까지 있을 수 있습니다. 첫 번째 자식은 DML 문에 대한 실행 계획이며 두 번째 자식은 트리거(문에서 사용되는 경우)를 나타냅니다.
조건문
그래픽 실행 계획은 IF...ELSE 문(조건이 있으면 다음을 수행하고, 그렇지 않으면 이 문을 수행)과 같은 조건문을 3개의 자식으로 나눕니다. IF...ELSE 문이 트리의 루트입니다. IF 조건은 하위 트리 노드가 됩니다. THEN과 ELSE 조건은 문 블록으로 표시됩니다. WHILE과 DO-UNTIL 문은 유사한 계획을 사용하여 표시됩니다. IF와 WHILE에는 해당 아이콘이 있습니다.
관계 연산자
테이블 검색, 조인, 집계 등 쿼리 엔진이 수행하는 작업은 트리에서 노드로 표시됩니다.
DECLARE CURSOR
DECLARE CURSOR 문은 관련 문이 자식 또는 노드로 포함된 그래픽 실행 계획 트리의 루트입니다.
세 가지 아이콘 유형에 각각의 색이 연결되어 있습니다. 반복기(논리 및 물리 연산자) 아이콘은 파랑이고 커서 아이콘은 노랑이며 언어 요소는 녹색입니다.
그래픽 실행 계획 노드 도구 설명
다음 표에서 설명하는 대로 커서가 각 노드를 가리키면 노드마다 도구 설명 정보가 표시됩니다. 그래픽 실행 계획에 있는 모든 노드가 여기에 설명된 도구 설명 항목을 포함하는 것은 아닙니다.
도구 설명 항목 |
설명 |
---|---|
Physical Operation |
해시 조인, 중첩 루프 등의 사용된 물리 연산자. 빨간색으로 표시된 물리 연산자는 쿼리 최적화 프로그램에서 손실된 열 통계 또는 손실된 조인 조건자와 같은 경고를 발생했음을 나타냅니다. 이렇게 되면 쿼리 최적화 프로그램이 예상보다 덜 효율적인 쿼리 계획을 선택하게 됩니다. 열 통계에 대한 자세한 내용은 통계를 사용하여 쿼리 성능 향상를 참조하십시오. 그래픽 실행 계획에서 통계 생성이나 업데이트 또는 인덱스 생성을 제안하면 SQL Server Management Studio 개체 탐색기의 바로 가기 메뉴를 사용하여 누락된 열 통계와 인덱스를 즉시 만들거나 업데이트할 수 있습니다. 자세한 내용은 인덱스 방법 도움말 항목을 참조하십시오. |
Logical Operation |
내부 조인 연산자와 같이 물리 연산자와 일치하는 논리 연산자. 논리 연산자는 도구 설명 위쪽에서 물리 연산자 다음에 나열됩니다. |
Estimated Row Size |
연산자에 의해 생성된 행의 예상 크기(바이트) |
Estimated I/O Cost |
연산에 대한 모든 I/O 작업의 예상 비용. 이 값은 되도록 작아야 합니다. |
Estimated CPU Cost |
연산에 대한 모든 CPU 작업의 예상 비용 |
Estimated Operator Cost |
쿼리 최적화 프로그램에서 이 연산을 실행하기 위한 비용입니다. 총 쿼리 비용의 백분율로 나타내는 이 연산의 비용은 괄호 안에 표시됩니다. 쿼리 엔진은 가장 효율적인 연산을 선택하여 쿼리를 수행하거나 문을 실행하므로, 이 값은 되도록 작아야 합니다. |
Estimated Subtree Cost |
이 연산 및 동일한 하위 트리에 있는 이전의 모든 연산을 실행하는 데 대한 쿼리 최적화 프로그램의 총 비용 |
Estimated Number of Rows1 |
연산자에서 생성한 행 수 |
1 이 도구 설명 항목은 실제 예상 계획에 Number of Rows로 표시됩니다.
[!참고]
SQL Server 2000에서 그래픽 실행 계획의 인수 필드에 있던 정보는 이제 그래픽 실행 계획의 도구 설명에 따라 나타납니다.
그래픽 실행 계획 노드 속성
노드를 마우스 오른쪽 단추로 클릭한 다음 속성을 클릭하여 그래픽 실행 계획의 노드에 대한 자세한 정보를 볼 수 있습니다.
참고 항목