홈 › 대용량·배치 › 01 / 8

실행 계획 읽기

EXPLAIN PLAN, EXPLAIN, 실행 계획 표시
섹션 6진행 0 / 8

실행 계획 읽기: EXPLAIN PLAN, EXPLAIN, 실행 계획 표시

데이터가 수천 건일 때는 어떻게 짜도 빠르지만 수백만 건이 되면 같은 쿼리가 갑자기 느려집니다. 대용량·배치 카테고리는 그 원인을 찾아 고치는 법을 다룹니다. 첫 레슨은 DB가 쿼리를 어떻게 실행하려 하는지 보여 주는 실행 계획을 읽는 법입니다. Oracle, MySQL, MSSQL 의 명령과 주요 연산, 예상과 실제 행 수 비교를 다룹니다.

1. 왜 배우는가

쿼리가 느릴 때 감으로 인덱스를 만들어 보면 운이 좋을 때만 맞습니다. 실행 계획은 DB가 테이블을 처음부터 끝까지 읽을지, 인덱스로 찾아 들어갈지, 정렬을 따로 할지를 보여 주는 설명서입니다. 계획을 읽으면 무엇을 고쳐야 하는지 근거가 생깁니다.

이 카테고리는 데이터가 많아질 때 느려지는 원인을 보고 고치는 법을 순서대로 다룹니다. 이 레슨에서 계획 읽는 법을 익히고, 다음 레슨들에서 조인 방식, 통계, 대량 변경과 배치 분할 같은 고치는 법으로 넘어갑니다. 계획은 고치기 전에 한 번, 고친 뒤에 한 번 봅니다.

이 레슨은 중급 09 인덱스를 안다고 보고 진행합니다. 예제 데이터는 가상의 주문 3,000행입니다. 실제 대용량은 아니지만 계획의 모양을 보기에는 충분합니다.

주의

이 레슨의 Oracle, MySQL, MSSQL 실행 계획 출력은 H2 로 재현하지 않았습니다. 모두 실제 DB 출력 모양을 흉내 낸 도식이고 값은 예시입니다. H2 의 EXPLAIN 은 H2 형식이며 실제 DB 계획의 근거가 아닙니다. H2 에서는 인덱스를 쓰는지 여부만 확인합니다.