옵티마이저 2

Chapter 09.04 쿼리 힌트

MySQL 서버는 인간이 원하는 서비스를 100%이해하지는 못한다. 따라서 서비스 개발자 또는 DBA보다 MySQL서버가 부족한 실행 계획을 수립할 때가 있다. RDBMS에서는 이러한 목적으로 힌트라는 기능이 제공된다. MySQL서버에서 가능한 쿼리 힌트는? 인덱스 힌트: 예전 버전에서 사용되던 힌트들 ex) USE INDEX, STRAIGHT_JOIN 옵티마이저 힌트 ex) MySQL 5.6 부터 새롭게 추가되기 시작한 힌트들을 뜻한다. STRAIGHT_JOIN 도 포함한다. 9.4.1 인덱스 힌트 USE INDEX, STRAIGHT_JOIN 등을 포함한 인덱스 힌트들은 모두 MySQL 서버에 옵티마이저 힌트가 도입되기 전에 사용되던 기능들이다. 이들은 모두 SQL 문법에 맞게 사용해야되므로 사용하게 ..

Chapter 09.01 옵티마이저(Optimizer)와 힌트

9.1 개요 실행 계획을 이해해야 실행 계획의 불합리한 부분을 찾아내고 더 최적화된 방법으로 실행 계획을 수립하도록 유도 가능하다. Def) 옵티마이저(Optimizer): MySQL은 쿼리를 최적으로 실행하기 위해 데이터가 어떤 분포로 저장돼있는지 통계 정보를 참조한다. 기본 데이터를 비교해서 최적의 실행 계획을 수립하는 작업을 말한다. MySQL 서버를 포함한 대부분의 DBMS에서 이러한 기능을 담당한다. 명령어 EXPLAIN으로 쿼리 실행 계획을 확인할 수 있다. 9.1.1 쿼리 실행 절차 SQL 파싱(parsing): 사용자로부터 요청된 SQL 문장을 잘게 쪼개서 MySQL 서버가 이해할 수 있는 수준으로 분리 (파스 트리)한다. SQL 파서라는 모듈로 처리한다. SQL 문법 검사 SQL 파스 트..