본문 바로가기

mysql

(2)
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 서버는 조인 대상 테이블 중 하나로부터 레코.. 더보기
Real MySQL 9장 옵티마이저와 힌트 #1 (~9.2) MySQL 서버에서 옵티마이저는 각 테이블에 있는 데이터가 어떻게 분포되어있는지 등의 통계정보를 가지고 최적의 실행계획을 수립한다. 9.1 개요 9.1.1 쿼리 실행 절차 쿼리 실행 절차는 크게 세 단계로 나눌 수 있다. SQL 문장을 분석하고 파스 트리를 만든다. SQL 문장의 문법적인 오류를 발견한다. 만들어진 파스트리를 확인해서 테이블과 인덱스를 어떤 식으로 읽을지를 선택한다. (최적화 및 실행 계획 수립) 복잡한 연산을 단순화한다. 조인이 있을 경우 읽는 순서를 정한다. 인덱스 통계정보를 이용해 사용할 인덱스를 결정한다. 가져온 레코드를 임시테이블에 넣고 다시 가공할지를 결정한다. 수립된 실행계획에 따라 스토리지 엔진에서 읽어오도록 요청한다. MySQL 엔진에서 스토리지 엔진으로부터 받은 레코드를.. 더보기