본문 바로가기
MySQL

[MySQL] 5.6 Index Condition Pushdown (ICP)

by 돌프홍 2014. 1. 23.

기존 MySQL (5.5 이하) 에서는 Index 에서 필터링을 하지 못하였다.

쿼리파싱, 실행계획 생성, 수행 - MySQL 엔진
데이터, 인덱스의 물리적 I/O   - 스토리지 엔진

위와 같이 처리하는 내부 구조로 인하여 쿼리 처리에 비효율이 발생한다.

예시로, Index 에서 필터링을 수행하지 못하는 것.

인덱스 : zipcode + lastname
쿼리    : select zipcode, lastname from people where zipcode='xxxx' and lastname like '%XTY%' ;

위 쿼리로, zipcode 조건만 인덱스를 사용할 수 있고, lastname 은 인덱스 필터링하지 못함.

스토리지 엔진에서 lastname like '%XTY%' 조건을 인지하지 못함.

ICP 는 where 필터조건 (Condition)을 스토리지 엔진으로 밀어넣을(pushdown)수 있도록 해주는 기능.

이 기능으로, DB내부에서 불필요한 I/O 및 데이터 전송 과정이 줄어들고, client 에서 빠른 응답 성능을 기대.