• MySQL매뉴얼
    • MySQL 5.6 매뉴얼
    • MySQL 5.1 매뉴얼
    • MySQL 5.0 매뉴얼
    • MySQL HA 매뉴얼
  • 기술문서
    • Xtrabackup 구성
    • 메모리 사용량 모니터링
  • 라이선스
  • 온라인문의
  • 회사소개
  • → 목 록 (MySQL5.6 한글메뉴얼) [close]
  • 1. MySQL 5.6 새로운 기능
  • 2. MySQL 설치 및 업그레이드
  • 3. MySQL Tutorial
  • 4. MySQL 프로그램
  • 5. MySQL 서버관리
  • 6. 보안
  • 7. 백업 및 복구
  • 8. 최적화
  • 1. 최적화 개요
    2. SQL문 최적화
    3. 최적화 및 인덱스
    4. 데이터베이스 구조의 최적화
    5. InnoDB 테이블의 최적화
    6. MyISAM 테이블의 최적화
    7. MEMORY 테이블 최적화
    8. 쿼리 실행 계획의 이해
    1. EXPLAIN으로 쿼리 최적화
    2. EXPLAIN 출력 포맷
    3. EXPLAIN EXTENDED 출력 포맷
    4. 쿼리 성능 추정
    5. 쿼리 최적화 제어
    1. 쿼리 계획 평가의 제어
    2. 전환 가능한 최적화 제어
    9. 버퍼링과 캐시
    10. 잠금 작업의 최적화
    11. MySQL 서버의 최적화
    12. 성능 측정
  • 9. Language Structure(언어구조)
  • 10. Character Sets(Globalization)
  • 11. 데이터형(Data Types)
  • 12. 함수와 연산자
  • 13. SQL 문법
  • 14. InnoDB 스토리지 엔진
  • 15. 기타 스토리지 엔진
  • 16. 고가용성 및 확장성
  • 17. 리플리케이션
  • 18. MySQL Cluster
  • 19. 파티셔닝
  • 20. Stored Programs and Views
  • 21. INFORMATION_SCHEMA
  • 22. PERFORMANCE SCHEMA
  • 23. 컨넥터 및 API
  • 24. MySQL 확장
  • 25. MySQL Enterprise Edition
  • 26. MySQL Workbench
  • 27. 제약 및 제한
  • 28. MySQL 5.7 새로운 기능

8.8.5.1 쿼리 계획 평가의 제어

쿼리 최적화 작업은 SQL 쿼리를 실행하기 위해 최적의 플랜을 찾을 수 있습니다. "좋은"계획과 "나쁜"계획의 성능 차이는 현격 한 차이 (즉, 몇 초에 몇 시간이나 며칠까지) 될 가능성이 있기 때문에 MySQL의 최적화를 포함한 대부분의 쿼리 최적화 어느 정도 가능한 모든 쿼리 평가 계획 중에서 최적의 계획을 철저하게 찾습니다. 결합 쿼리에 대해 MySQL 최적화에 의해 조사 될 계획의 수는 쿼리에서 참조되는 테이블 수와 함께 기하 급수적으로 증가합니다. 몇몇 테이블 (일반적으로 7 ~ 10 미만)의 경우 이것은 문제가되지 않습니다. 그러나 큰 쿼리가 전송 된 경우 쿼리 최적화에 소요되는 시간이 서버 성능의 주요 병목 현상하는 경향이 있습니다.

쿼리 최적화 더 유연한 방법으로 사용자는 최적화 프로그램이 최적의 쿼리 평가 계획을 얼마나 철저하게 검색을 제어 할 수 있습니다. 일반적인 생각은 최적화에 의해 조사 된 계획이 적을수록 쿼리 컴파일에 걸리는 시간도 줄어들 것입니다. 한편, 최적화는 어떤 계획을 생략하기 위해 최적의 플랜을 놓칠 가능성도 있습니다.

평가 계획의 수에 대한 최적화 작업을 2 개의 시스템 변수를 사용하여 제어 할 수 있습니다.

  • optimizer_prune_level 변수는 최적화 테이블마다 액세스되는 행 수의 견적에 따라 특정 계획을 건너 뛰도록 지시합니다. 경험상 이러한 종류의 "학습에 의한 추측"최적의 플랜을 거의 놓치지 않고 쿼리 컴파일 시간을 획기적으로 단축 할 수 있습니다. 기본적으로이 옵션이 선택 optimizer_prune_level=1 인 것은이 때문입니다. 그러나 최적화가 더 적합한 쿼리 계획을 묵인했다고 생각한다면, 쿼리 컴파일에 상당한 시간이 걸릴 위험을 수반하지만이 옵션을 해제 ( optimizer_prune_level=0 ) 할 수 있습니다. 이 경험칙을 사용하여 최적화는 아직 기하 급수적 인 숫자의 플랜을 검색합니다.

  • optimizer_search_depth 변수는 최적화가 더 확장해야할지 여부를 평가하기 위해 불완전한 각 계획의 "미래"를 어느 정도 간파을 전합니다. optimizer_search_depth 값이 작을수록 쿼리 컴파일 시간이 현격하게 줄어들 수 있습니다. 예를 들어, 12, 13 또는 그 이상의 테이블의 쿼리는 optimizer_search_depth 가 쿼리의 테이블 수에 가까운 경우 컴파일에 몇 시간 또는 며칠도 쉽게 필요할 수 있습니다. 동시에 3 4와 동일한 optimizer_search_depth 로 컴파일 된 경우 최적화 프로그램은 같은 쿼리에서 1 분 이내에 컴파일 할 수 있습니다. optimizer_search_depth 적절한 값을 알 수없는 경우이 변수를 0으로 설정하여 최적화에 자동으로 값을 결정 할 수 있습니다.


서울시 강남구 영동대로 602 6층
TEL: 02-6061-0006  /  E: csr@mysqlkorea.com
주식회사 이노클러스터  등록번호 : 727-86-02261
Copyright © innocluster Co. ltd. all rights reserved