• 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문 최적화
    1. SELECT문 최적화
    1. SELECT문 속도
    2. MySQL WHERE절 최적화 방법
    3. range 최적화
    4. 인덱스 병합 최적화
    5. 엔진 조건문 푸시 다운 최적화
    6. 인덱스 조건문 푸시 다운 최적화
    7. 인덱스 확장의 사용
    8. IS NULL 최적화
    9. LEFT JOIN과 RIGHT JOIN 최적화
    10. Nested Loop 조인 알고리즘
    11. 중첩 된 결합의 최적화
    12. 외부 조인의 단순화
    13. Multi-Range Read 최적화
    14. Block Nested Loop 조인과 Batched Key Access 결합
    15. ORDER BY 최적화
    16. GROUP BY 최적화
    17. DISTINCT 최적화
    18. 서브 쿼리의 최적화
    19. LIMIT 쿼리의 최적화
    20. 풀 테이블 스캔을 피하는 방법
    2. DML문 최적화
    3. 데이터베이스 권한 최적화
    4. INFORMATION_SCHEMA 쿼리 최적화
    5. 기타 최적화 Tips
    3. 최적화 및 인덱스
    4. 데이터베이스 구조의 최적화
    5. InnoDB 테이블의 최적화
    6. MyISAM 테이블의 최적화
    7. MEMORY 테이블 최적화
    8. 쿼리 실행 계획의 이해
    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.2.1.5 엔진 조건문 푸시 다운 최적화

이 최적화는 인덱스가 설정되어 있지 않은 컬럼과 상수와 직접 비교의 효율성을 향상시킵니다. 이런 경우 조건이 평가를 위해 스토리지 엔진에 "푸시 다운"됩니다. 이 최적화는 NDB 스토리지 엔진에서만 사용할 수 있습니다.

MySQL Cluster는 이러한 최적화를 통해 클러스터의 데이터 노드와 쿼리를 발행 한 MySQL Server간에 네트워크를 통해 일치하지 않는 행을 쓰기 필요성을 없앨 수 그것을 사용하는 경우 쿼리를 조건문 푸시 다운이 가능하더라도 사용하지 않는 경우보다 5 - 10 배 속도를 높일 수 있습니다.

MySQL Cluster 테이블이 다음과 같이 정의되어 있다고합니다.

 CREATE TABLE t1 (
     a INT,
     b INT,
     KEY (a)
 ) ENGINE = NDB;

조건문 푸시 다운은 인덱스가 설정되어 있지 않은 컬럼과 상수와 비교를 포함하여 여기에 나타낸 바와 같은 쿼리에서 사용할 수 있습니다.

 SELECT a, b FROM t1 WHERE b = 10;

조건문 푸시 다운의 사용은 EXPLAIN 의 출력에서 확인할 수 있습니다.

 mysql> EXPLAIN SELECT a,b FROM t1 WHERE b = 10\G
 *************************** 1. row ******************** *******
            id : 1
   select_type : SIMPLE
         table : t1
          type : ALL
 possible_keys : NULL
           key : NULL
       key_len : NULL
           ref : NULL
          rows : 10
         Extra : Using where with pushed condition

그러나 조건문 푸시 다운은 이러한 두 개의 쿼리 중 하나와 함께 사용할 수 없습니다.

 SELECT a, b FROM t1 WHERE a = 10;
 SELECT a, b FROM t1 WHERE b + 1 = 10;

컬럼 a 에 인덱스가 존재하기 때문에 조건문 푸시 다운은 첫 번째 쿼리에는 적용 할 수 없습니다. (인덱스 액세스 메소드가 효율적이기 때문에 조건문 푸시 다운보다 우선하여 선택됩니다.) 인덱스가 설정되어 있지 않은 컬럼 b 를 포함 비교는 간접적이기 때문에 두 번째 쿼리에 컨디션 푸시 다운을 채택 할 수 없습니다. (단, WHERE 절에서 b + 1 = 10 을 b = 9 에 감을 때 조건문 푸시 다운을 적용 할 수 있습니다.)

> 또는 < 연산자를 사용하여 인덱싱 된 열을 상수와 비교하는 경우에도 조건문 푸시 다운을 채택 할 수 있습니다.

 mysql> EXPLAIN SELECT a, b FROM t1 WHERE a < 2\G
 *************************** 1. row ******************** *******
            id : 1
   select_type : SIMPLE
         table : t1
          type : range
 possible_keys : a
           key : a
       key_len : 5
           ref : NULL
          rows : 2
         Extra : Using where with pushed condition

조건문 푸시 다운에서 지원되는 다른 비교에는 다음이 포함됩니다.

  • column [NOT] LIKE pattern

    pattern 은 일치하는 패턴을 포함하는 문자열 리터럴이어야합니다. 구문은 섹션 12.5.1 "문자열 비교 함수" 를 참조하십시오.

  • column IS [NOT] NULL

  • column IN ( value_list )

    value_list 의 각 항목은 상수 리터럴 값이어야합니다.

  • column BETWEEN constant1 AND constant2

    constant1 과 constant2 는 각각 상수 리터럴 값이어야합니다.

이전 목록의 모든 경우에서 조건을 컬럼 및 상수와 하나 이상의 직접 비교 형식으로 변환 할 수 있습니다.

엔진 조건문 푸시 다운은 기본적으로 활성화됩니다. 서버를 시작할 때 그것을 해제하려면 optimizer_switch 시스템 변수를 설정합니다. 예를 들어, my.cnf 파일에 다음 줄을 사용합니다.

 [mysqld]
 optimizer_switch = engine_condition_pushdown = off

실행시에 다음과 같이 조건문 푸시 다운을 사용합니다.

 SET optimizer_switch = 'engine_condition_pushdown = off';

제한 엔진 조건문 푸시 다운에는 다음과 같은 제한이 있습니다.

  • 조건문 푸시 다운은 NDB 스토리지 엔진에서만 지원됩니다.

  • 컬럼은 상수와 만 비교 할 수 있지만 여기에는 상수 값으로 평가되는 표현식도 포함되어 있습니다.

  • 비교에 사용되는 컬럼은 BLOB 형 또는 TEXT 형식 중 하나되어서는 안됩니다.

  • 컬럼과 비교되는 문자열 값은 컬럼과 같은 데이터 정렬을 사용해야합니다.

  • 결합은 직접 지원되지 않습니다. 여러 테이블을 포함하는 조건은 가능한 경우에 개별적으로 적용됩니다. 실제로 푸시 다운되는 조건을 판단하려면 EXPLAIN EXTENDED 를 사용합니다.


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