본문으로 건너뛰기
SQLD 준비실
이론 전체 목차 열기 20 / 32

SQL 고급활용 및 튜닝 · 수행 구조 20 / 32

SQL 수행 구조

SQL이 파싱, 최적화, 실행 단계를 거쳐 결과를 반환하는 흐름을 초보자도 따라갈 수 있게 정리합니다.

출제 빈도 ★★★☆☆ 관련 문제 2개 | ParsingOptimizationExecution

SQL은 바로 실행되지 않습니다

사용자가 SQL을 보내면 DBMS는 문장을 곧장 읽어 데이터를 찾지 않습니다. 먼저 문법을 확인하고, 어떤 방법으로 실행할지 고른 뒤, 실제 데이터 접근을 수행합니다.

SQL 입력 → 파싱 → 최적화 → 실행 계획 생성 → 실행 → 결과 반환

이 흐름을 알아야 실행 계획, 인덱스, 조인 방식, 옵티마이저 문제를 연결해서 이해할 수 있습니다.

파싱

파싱은 SQL 문장을 DBMS가 이해할 수 있는 구조로 바꾸는 단계입니다.

  • 문법이 맞는지 확인합니다.
  • 테이블과 컬럼이 실제로 존재하는지 확인합니다.
  • 사용자가 해당 객체에 접근할 권한이 있는지 확인합니다.
SELECT ename, sal
FROM emp
WHERE deptno = 10;

컬럼 이름을 틀리거나 권한이 없으면 실행 단계까지 가지 못하고 파싱 과정에서 오류가 납니다.

최적화

최적화는 같은 결과를 만드는 여러 방법 중 비용이 낮은 방법을 고르는 단계입니다.

예를 들어 deptno = 10 조건이 있을 때 DBMS는 다음 선택지를 비교합니다.

  • 테이블 전체를 읽습니다.
  • deptno 인덱스를 사용합니다.
  • 조인이 있다면 어떤 테이블을 먼저 읽을지 정합니다.
  • 조인 방식으로 NL, Hash, Sort Merge 중 무엇을 쓸지 정합니다.

최적화 결과가 실행 계획입니다.

실행

실행 단계에서는 실행 계획대로 실제 블록을 읽고, 조건을 평가하고, 조인과 정렬을 수행합니다.

성능 문제는 대개 이 단계에서 드러납니다. 너무 많은 블록을 읽거나, 불필요한 정렬을 하거나, 잘못된 조인 순서를 선택하면 응답 시간이 길어집니다.

소프트 파싱과 하드 파싱

DBMS는 이미 처리한 SQL의 실행 계획을 공유 영역에 보관할 수 있습니다.

구분의미비용
소프트 파싱기존 실행 계획을 재사용낮음
하드 파싱새로 최적화하고 실행 계획 생성높음

조건 값만 바뀌는 SQL은 바인드 변수를 사용하면 실행 계획 재사용 가능성이 높아집니다.

SELECT ename
FROM emp
WHERE empno = :empno;

값을 문자열로 계속 붙여 SQL을 만들면 매번 다른 SQL로 인식되어 하드 파싱이 늘 수 있습니다.

시험장에서 보는 핵심

  • SQL 수행은 파싱, 최적화, 실행 순서로 이해합니다.
  • 실행 계획은 최적화 단계의 산출물입니다.
  • 바인드 변수는 실행 계획 재사용과 파싱 비용 절감에 도움이 됩니다.
  • 성능 튜닝은 SQL 문장만이 아니라 데이터 접근 경로를 바꾸는 작업입니다.

한 문장 요약

DBMS는 SQL을 이해하고, 실행 방법을 고른 뒤, 그 계획대로 데이터를 읽습니다.