본문 바로가기

옵티마이저

(2)
Real MySQL 10장 실행계획 옵티마이저가 항상 좋은 실행 계획을 만들어낼 수 있는 것은 아니다. 그렇기 때문에 DBMS 서버에서는 이를 보완할 수 있도록 EXPLAIN 명령으로 옵티마이저가 수립한 실행 계획을 확인할 수 있다. MySQL 서버의 실행 계획에 가장 영향을 미치는 통계 정보를 살펴보고, 실행 계획을 읽는 순서와 키워드들을 살펴보자 10.1 통계 정보 MySQL 5.7 까지는 테이블과 인덱스에 대한 정보를 가지고 실행 계획을 수립했다. MySQL 8.0 부터는 인덱스되지 않은 칼럼들에 대해서도 데이터 분포도를 수집해서 저장하는 히스토그램 정보가 도입됐다. 10.1.1 테이블 및 인덱스 통계 정보 비용 기반 최적화에서 가장 중요한 지표는 통계 정보다. MySQL 서버에서는 실제 테이블 데이터의 일부를 분석해서 통계 정보를 .. 더보기
Real MySQL 9장 옵티마이저와 힌트 #2 (9.3~) 9.3 고급 최적화 MySQL 옵티마이저는 실행 계획을 수립할 때 통계 정보와 옵티마이저 옵션을 결합해서 최적의 실행 계획을 수립한다. 여기서 옵티마이저 옵션은 크게 조인과 관련된 옵티마이저 옵션과 옵티마이저 스위치로 구분할 수 있다. 9.3.1 옵티마이저 스위치 옵션 옵티마이저 스위치 옵션은 optimizer_switch 시스템 변수를 이용해서 제어한다. 9.3.1절 하위의 옵션들을 on, off, default로 설정하여 사용할 수 있다. 9.3.1.1을 제외한 모든 설정 옵션은 기본값이 on이다. 9.3.1.1 MRR과 배치 키 액세스(mrr & batched_key_access) MRR은 Multi Range Read를 줄여서 부르는 말이다. MySQL 서버는 조인 대상 테이블 중 하나로부터 레코.. 더보기