
- Query Cache
- SQL문이 key, 결과가 value인 맵입니다. 데이터가 변경되었으면 쿼리캐시가 삭제되어야겠죠?( 조회 결과가 달라질 것이기 때문에 ) 이는 동시 처리 성능 저하를 유발하고, 버그의 원인이 되어 MySQL 8.0 버전부터는 삭제되었습니다.
- Parsing
- 사용자가 요청한 SQL을 잘게 쪼개어 서버가 이해할 수 있는 수준으로 분리합니다.
- Preprocessing
- 해당 쿼리가 문법적으로 틀린지 확인하여 부정확하면 처리를 중단합니다. ( 흔히 만나보는 syntax 에러는 parser와 preprocessor에서 발생합니다. )
- Query Optimization
- 실행계획은 이 단계에서의 출력을 의미합니다.
- 쿼리 분석 : where절의 검색 조건인지, join 조건인지 판단합니다.
- 인덱스 선택 : 각 테이블에 사용된 조건과 인덱스 통계 정보를 이용해 사용할 인덱스를 결정합니다.
- 조인 처리 : 여러 테이블의 조인이 있는 경우, 어떤 순서로 테이블을 읽을지 결정합니다.
- Handler (Storage Engine)
- MySQL Execution engine의 요청에 따라 데이터를 디스크로 저장하고, 디스크로부터 읽어오는 역할을 합니다. 대표적인 스토리지 엔진은 InnoDB, MyISAM 이 있습니다. MySQL 엔진에서는 스토리지 엔진으로부터 받은 레코드를 조인하거나 정렬하는 작업을 수행합니다.
SQL 워크벤치는 실행계획의 시각화를 제공
워크벤치에서 Visual Optimizer 활용

어떤 테이블은 full table scan이고, 어떤 테이블은 index range / full / unique scan인지 시각화 하여 보여줍니다. 어떤 방식으로 조인되었고, 결과 row는 몇 개 이며, group by 및 order by는 어떤 식으로 수행되었는지 확인할 수 있습니다.
'DB > RDB' 카테고리의 다른 글
| sql Join 튜닝( 순서 , 방법 ) (0) | 2025.04.22 |
|---|---|
| index, 테이블 엑세스, 인덱스 손익분기점 (0) | 2025.04.22 |
| 다중 칼럼 인덱스 (1) | 2025.04.18 |
| select할때, 전체범위 처리 & 부분범위 처리 (0) | 2025.04.18 |
| SQL튜닝 (0) | 2025.04.17 |