옵티마이저의 비유

옵티마이저는 “가장 짧은 길”이 아니라 가장 비용이 낮을 것으로 예상되는 길을 고른다

네비게이션이 여러 경로를 비교해 예상 도착 시간이 가장 짧은 길을 추천하듯, 옵티마이저도 같은 결과를 만드는 여러 실행 계획 중에서 예상 비용이 가장 낮은 계획을 선택합니다.

공통점 1

목적지는 하나지만, 갈 수 있는 경로는 여러 개입니다.

공통점 2

선택의 기준은 이름이 아니라 현재 정보로 계산한 예상 비용입니다.

네비게이션

서울 → 부산처럼 같은 도착지를 두고 경로를 비교

옵티마이저

같은 SQL 결과를 두고 실행 계획을 비교

후보
고속도로, 우회도로, 국도

도착지는 같아도 실제로 갈 수 있는 길은 여러 개입니다.

Index Scan, Full Scan, Join 순서

결과는 같아도 내부 실행 방식은 서로 다를 수 있습니다.

판단 정보
거리, 속도, 실시간 교통

짧은 길보다 현재 더 빨리 도착할 길을 찾는 데 필요한 정보입니다.

행 수, 인덱스, 선택도, 통계

어떤 계획이 더 적은 읽기와 정렬로 끝날지 추정하는 근거입니다.

선택 기준
최단 거리보다 예상 소요 시간

겉보기로 짧아 보여도 정체가 심하면 추천되지 않습니다.

겉보기 단순함보다 예상 실행 비용

문법상 단순해 보여도 읽는 데이터가 많으면 비싼 계획이 됩니다.

정보가 틀리면
막힌 길을 추천

교통 정보가 오래되면 실제보다 빠르다고 잘못 판단할 수 있습니다.

비효율적인 실행 계획 선택

통계가 오래되면 옵티마이저도 실제보다 싸다고 오판할 수 있습니다.

즉, 옵티마이저 튜닝은 결과를 바꾸는 일이 아니라 같은 결과를 내는 여러 경로 중 더 싼 경로를 고르도록 통계와 접근 경로를 맞춰 주는 일입니다.