SQL SERVER DB를 사용하다보면
실행계획을 봐야 할 때가 많이 있습니다.
쿼리 튜닝을 하거나
맨 처음 쿼리를 작성할 때도
많이 봐야 합니다.
이 때를 대비해서
실행계획을 보는 방법 및
간단한 설명을 정리해보고자 합니다.
1. SSMS에서 실행계획 보기
저는 SQL SERVER를 사용할 때
SSMS를 제일 많이 사용합니다.
그래서 SSMS 기반으로
설명을 드리도록 하겠습니다.
1-1. 상단 메뉴
상단 메뉴에 실행계획을 보는
단축아이콘이 있습니다.
그것을 클릭하면 됩니다.
1-2. 마우스 우클릭
마우스 우클릭을 해서도
실행계획을 실행할 수 있습니다.
위처럼 마우스 우클릭하면
실행계획을 보는 메뉴가 있습니다.
이를 실행하면 됩니다.
1-3. 단축키
위 2개의 이미지를 보면
단축키가 나와있습니다.
Ctrl + L 입니다.
이렇게 누르면 실행계획이 나옵니다.
1-4. 실행계획 텍스트로 표시하기
SET절을 이용해서 실행계획을 표시할 수 있습니다.
제가 아는 것은 SET을 이용해서 실행계획을 표시하는데
TEXT 형식으로 나오게 됩니다.
위 1~3번의 경우에는
아이콘으로 나오는데
이 방법은 텍스트로 나오게 됩니다.
방법은 다음과 같습니다.
111111111111
위처럼 작성하여 돌리게 되면
아래처럼 결과가 나옵니다.
SET절로 해서 나오게 했다면
반드시 OFF를 시켜주어야 합니다.
2. 실행계획 보기
위에 여러가지 방법으로
실행계획을 보게 되면
아래처럼 나오게 됩니다.
제일 먼저 실행이 되는 것은
오른쪽 하단부터입니다.
그것부터 순차적으로 올라가면서 실행이 됩니다.
그리고 비용이라고 나오는데
이것은 해당 쿼리가 동작되는 동안
발생하는 소요비용??
그런걸 말하는 것입니다.
저기 보면 비용이 높은 것들이 있습니다.
그런 높은 것 위주로 보고
튜닝을 해주시면 되십니다.
3. 실행계획 설명
실행계획을 실행하면 여러가지 정보가 나옵니다.
그런 정보들에 대한 설명입니다.
열 이름 | 설명 |
Rows | 실행된 행수 |
Executes | Loop 일 경우 Loop가 실행 된 횟수 |
StmtText | PLAN_ROW 유형의 행에 대해서 이 열에 작업에 대한 설명 |
StmtId | 현재 일괄 처리에 있는 문의 수 (몇번째 쿼리에 대한 통계인지) |
NodeId | 현재 쿼리의 노드 ID (현재 노드의 식별값) |
Parent | 부모 단계의 노드 ID (이 값이 같은 것 끼리, 같은 depth라고 생각하면 된다) |
PhysicalOp | 노드에 대한 물리적 구현 알고리즘입니다. PLAN_ROWS 형식의 행에만 해당됩니다. |
LogicalOp | 이 노드가 나타내는 관계형 대수 연산자입니다. PLAN_ROWS 형식의 행에만 해당됩니다. |
Argument | 수행되는 작업에 대한 추가 정보를 제공합니다. 물리적 연산자에 따라 이 열의 내용이 달라집니다. |
DefinedValues | 이 연산자가 사용하는 값에 대한 쉼표로 구분된 목록을 포함합니다. |
EstimateRows | 이 연산자가 생성한 출력의 예상 행 수입니다. PLAN_ROWS 형식의 행에만 해당됩니다. |
EstimateIO | 작업에 대한 예상 I/O 비용입니다. PLAN_ROWS 형식의 행에만 해당됩니다. |
EstimateCPU | 이 연산자에 대한 예상 CPU 비용입니다. PLAN_ROWS 형식의 행에만 해당됩니다. |
AvgRowSize | 이 연산자를 통해 통과되는 행의 예상 평균 행 크기(바이트)입니다. |
TotalSubtreeCost | 이 작업 및 모든 자식 작업에 대한 예상(누적) 비용입니다. |
OutputList | 현재 작업에서 예상하고 있는 열에 대한 쉼표로 구분된 목록을 포함합니다. |
Warnings | 현재 작업과 연관된 경고 메시지에 대한 쉼표로 구분된 목록을 포함합니다. |
Type | 노드 유형. 각 쿼리의 부모 노드에 대해서는 노드 유형이 Transact-SQL 문 유형(예: SELECT, INSERT, EXECUTE 등)입니다. 실행 계획을 나타내는 하위 노드에 대해서는 PLAN_ROW 유형입니다. |
Parallel | 0 = 연산자가 병렬로 실행되지 않습니다. |
1 = 연산자가 병렬로 실행됩니다. | |
EstimateExecutions | 현재 쿼리를 실행하는 동안 이 연산자가 실행될 예상 횟수입니다. |
이상으로 MS-SQL에서의 실행계획 보기 및 설명이였습니다~
'컴퓨터관련 > MS-SQL' 카테고리의 다른 글
[MS-SQL]WITH NOLOCK 설명 및 사용법 (0) | 2019.08.08 |
---|---|
[MS-SQL]0으로 나누어 에러 발생 시 (0) | 2019.08.02 |
[MS-SQL]유니코드로 다국적언어 사용 및 VARCHAR와 NVARCHAR 차이 (0) | 2019.07.26 |
[MS-SQL]요일구하기 및 특정요일 데이터 추출하기 (3) | 2019.07.25 |
[MS-SQL]조인(JOIN) 설명 및 사용법 (3) | 2019.07.11 |