SQL 실행계획

조아라·2022년 11월 26일
0

SQL

목록 보기
4/5

실행계획

실행 계획 종류

  • 예상 실행 계획
    • 쿼리 컴파일만 수행
    • 실행에 포함되는 정보들은 안나옴(EX. 쿼리 실행 후 CPU 점유율, 실행시간 등)
  • 실제 실행 계획
    • (예상 실행 계획 + 실행 정보)
    • 비교
      • 예상 실행 계획에서 볼 수 있는 내용
        • FASTFIRSTROW, (FAST n), 힌트, SET문
      • 실행 계획에서 볼 수 있는 내용
        • 임시 테이블을 포함한 저장 프로시저
  • 활성 쿼리 통계
    • 쿼리 실행을 직접 모니터하여 진행과정을 보는 것

실행게획 출력 요소

( 괄호 밖 : 물리적 연산자

물리적 구현 알고리즘

Clustered Index Seek

Nested Loop Join

Stream Aggregate, etc

( 괄호 안 : 논리적 연산자

관계형 대수 연산

쿼리 자체에 포함된 구문과 연관

Inner Join

Aggregate, etc

2012SP3/2014SP2+ 읽은 행 수 새롭게 추가

예상 행수와 실제 행수 간의 편차가 심한 경우

  • 복합 인덱스 튜닝 부족
  • 열 통계(Statistics) 관련 문제(매우 오래된 경우나 잘 못 쓴 경우)
  • SARG(Search Argument) 위반 등의 SQL 쿼리 자체 문제(ex. 옵티마이저가 행수를 추적하는데 방해되는 요소)

경고 정보

  • 유형
    • SpillsToTempdb (tempdb사용됨)
    • PlanAffectingConvert (실행계획에 영향을 미치는 형 변환 있음)
    • ColumnsWithNoStatistics (열에 통계 정보 없음)
    • Unmatched Indexs (filtered Index 사용 못함)
    • No Join Predicate (조인 조건자 없음)

SET STATISTICS IO { ON /OFF }

  • 논리적 읽기 수 가 핵심
  • 목적
    • 테이블 별 I/O 크기를 평가하는 것이 주 목적
    • Worktable, Workfile 발생 여부/ 크기 확인 (옵티마이저의 내부 임시 table )
      • 해당 문제로 인해 성능이 느려짐

0개의 댓글