목록전체 글 (8)
Hello world
9.3 고급 최적화 MySQL 서버의 옵티마이저가 실행 계획을 수립할 때 통계 정보와 옵티마이저 옵션을 결합해서 최적의 실행 계획을 수립하게 된다. 옵티마이저 옵션은 크게 아래 두 가지로 나누어진다. 조인 관련 옵티마이저 옵션 옵티마이저 스위치 9.3.1 옵티마이저 스위치 옵션 옵티마이저 스위치 옵션을 수정하려면 아래처럼 커맨드를 사용해서 수정해야한다. mysql > SET GLOBAL optimizer_switch='index_merge=on,index_merge_union=on,....'; 그리고 사용 가능한 옵티마이저 스위치 옵션은 다음과 같다. 옵티마이저 스위치 이름 기본값 설명 batched_key_access off BKA 조인 알고리즘 사용 여부 block_nested_loop on Bloc..
들어가기 전 이 글은 RealMySQL 을 공부하며 작성한 글입니다. 9.1 개요 MySQL 서버가 사용자의 요청을 처리할 때, 빠른 수행을 위해 옵티마이저를 이용한 쿼리 최적화를 실행한다. 이 장에서은 옵티마이저에 대해서 공부할 예정이다. 9.1.1 쿼리 실행 절차 MySQL 서버에서 쿼리 실행 요청이 오면 다음 형태로 처리된다. SQL 파서 : 사용자가 작성한 SQL문장을 AST로 만든다. 전처리기 + 옵티마이저 : 접근할 테이블에 권한이 있는지 확인한 후, 쿼리를 최적화 한다. 스토리지 엔진 : 최적화 된 쿼리를 스토리지 엔진이 실행해서 데이터를 가져온다. 최적화 단계에서는 다음을 고려한다. 그리고 아래 과정은 옵티마이저가 처리한다. 불필요한 조건 제거 및 복잡한 연산의 단순화 테이블 조인이 있는 ..
들어가기 전 이 글은 Real MySQL을 공부하며 정리한 글입니다. 8.8 클러스터링 인덱스 MySQL에서 InnoDB 스토리지 엔진으로 생성된 테이블들은 모두 PK 값으로 클러스터링 된다. 이것을 클러스터링 인덱스라고 함. 클러스터링 인덱스는 'PK 값이 비슷한 녀석들은 같이 사용될 가능성이 높음' 이라는 것에 착안에 도입된 개념임. 8.8.1 클러스터링 인덱스 클러스터링 인덱스는 PK 값이 비슷한 녀석들을 하나의 데이터 페이지에 저장한다는 것이다. PK의 값이 어떤 데이터 페이지에 저장되어야 할지를 결정한다는 것이다. PK 값이 바뀌면 레코드가 저장된 데이터 페이지도 옮겨져야 함. PK 값 기반 검색은 빠름. 레코드의 저장 / PK 값 수정은 느림. (디스크 I/O가 더 발생해야 하기 때문) PK ..