꾸준히 오래오래

데이터 엔지니어의 공부 곳간✏️

wil 2

[Real MySQL] 옵티마이저와 힌트 - 2

Real MySQL 8.0 전면 개정판을 읽으며 정리한 내용입니다. 쿼리 튜닝의 Base는 내가 실행한 쿼리가 어떻게 처리되는지 아는 것이다! ✔️ GROUP BY 처리 버퍼링 방식으로 쿼리를 처리해야 한다. GROUP BY에 대한 결과물을 필터링하기 위해서 HAVING 절을 사용한다. 이때 GROUP BY에 사용된 조건은 인덱스를 사용해서 처리될 수 없으므로, HAVING절 튜닝을 위한 인덱스 생성 등은 필요 X 인덱스 스캔을 이용한 GROUP BY(타이트 인덱스 스캔) 조인의 드라이빙 테이블에 속한 칼럼만을 이용해 그루핑 하는 경우에 GROUP BY 칼럼으로 이미 인덱스가 있는 경우 사용 가능한 방법 루스 인덱스 스캔을 이용한 GROUP BY 단일 테이블에 대해 수행되는 GROUP BY 처리에서만 사..

[Real MySQL] 옵티마이저와 힌트 - 1

Real MySQL 8.0 전면 개정판을 읽으며 정리한 내용입니다. 쿼리 튜닝의 Base는 내가 실행한 쿼리가 어떻게 처리되는지 아는 것이다! mysql에서 쿼리는 크게 3단계의 과정으로 실행된다. sql 파싱 mysql 서버가 이해할 수 있는 수준으로 sql 문장을 분리, 이 과정에서 문법 오류 체크 최적화 및 실행 계획 수립 mysql 서버의 옵티마이저가 처리 (테이블을 읽을 순서, 사용할 인덱스 결정 등) 실행 계획을 바탕으로 스토리 엔진에서 데이터 확보 ⚙️ 옵티마이저 ✔️ 옵티마이저란? 쿼리를 최적으로 실행하기 위해서 데이터가 어떻게 분포되어있는지 통계정보를 참조하여, mysql에서는 EXPLAIN이라는 명령으로 쿼리의 실행계획을 확인할 수 있다. ✔️ 옵티마이저의 종류 비용 기반 최적화(Cos..