본문 바로가기
DB/RDB

MySQL 조회시 플로우

by doriver 2025. 4. 18.

 

  1. Query Cache
    • SQL문이 key, 결과가 value인 맵입니다. 데이터가 변경되었으면 쿼리캐시가 삭제되어야겠죠?( 조회 결과가 달라질 것이기 때문에 ) 이는 동시 처리 성능 저하를 유발하고, 버그의 원인이 되어 MySQL 8.0 버전부터는 삭제되었습니다.
  2. Parsing
    • 사용자가 요청한 SQL을 잘게 쪼개어 서버가 이해할 수 있는 수준으로 분리합니다.
  3. Preprocessing
    • 해당 쿼리가 문법적으로 틀린지 확인하여 부정확하면 처리를 중단합니다. ( 흔히 만나보는 syntax 에러는 parser와 preprocessor에서 발생합니다. )
  4. Query Optimization
    • 실행계획은 이 단계에서의 출력을 의미합니다.
    • 쿼리 분석 : where절의 검색 조건인지, join 조건인지 판단합니다.
    • 인덱스 선택 : 각 테이블에 사용된 조건과 인덱스 통계 정보를 이용해 사용할 인덱스를 결정합니다.
    • 조인 처리 : 여러 테이블의 조인이 있는 경우, 어떤 순서로 테이블을 읽을지 결정합니다.
  5. 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