실행계획이란 사용자가 SQL을 실행하여 데이터를 추출하려고 할 때 옵티마이저가 수립하는 작업 절차이다. 즉, 'SQL을 데이터베이스에서 어떻게 처리하여 데이터를 가져올것인가?’를 예상하는 계획표이다. SQL이 실행되는데 필요한 cost를 계산하고 그 cost를 통해 어떤 방식으로 실행하는 것이 가장 좋은지를 판단하여. SQL이 데이터베이스에 전달되면 데이터베이스는 여러 단계를 거쳐서 해당 SQL을 어떤 순서와 방식으로 처리할 것인지 계획을 세우게 된다
💡 옵티마이저
- SQL을 가장 빠르고 효율적으로 수행할 최적(최저비용)의 처리 경로를 생성해주는 DBMS 내부의 핵심엔진
- DBMS에서는 쿼리를 최적으로 실행하기 위해 각 테이블의 데이터가 어떤 분포로 저장돼 있는지 통계 정보를 참조하고, 그 기본 데이터를 비교해 최적의 실행 계획을 수립하는 작업
- 옵티마이저(Optimizer)에서 "이 쿼리문을 어떻게 실행시키겠다!"라는 여러 가지 실행계획을 세운다.
실행 계획으로 데이터 정렬 방식 또는 사용되는 인덱스 등을 파악해 데이터를 더 신속하게 가져올 수 있게 튜닝할 수 있다.
→ 쿼리 성능 향상에 도움을 준다.
데이터베이스에서 전달된 SQL문은 파싱 > 최적화 > 실행 과정을 거쳐서 처리된다.
출처) https://coding-factory.tistory.com/743
사용자로부터 요청된 SQL 문장을 잘게 쪼개서 서버가 이해할 수 있는 수준으로 분리한다.
파스 트리를 참조하면서 SQL이 실행되는데 필요한 cost를 계산, 실행 계획(Execution Plan) 작성한다 → 옵티마이저에서 처리
옵티마이저에 의한 SQL최적화가 끝나면, 실행계획(Execution Plan)이 완성된다.
실행 계획(Execution Plan)을 바탕으로 메모리상에서 데이터를 읽거나 물리적인 공간에서 데이터를 로딩하는 등의 작업을 한다.
→ 실행엔진(Query Execution Engine)에서 수행함.
조회하기 위해 실제 데이터를 보관하는 스토리지 엔진과 지속적으로 API Call을 주고 받는다.