쿼리 테스트 관련 정보를 공유받다가
SQL_NO_CACHE
라는 sql 명령어를 보았다.
딱 보기에는 캐시없이 조회하는 거 같은데
느낌상 성능테스트 할 때 많이 쓰겠다는 느낌을 받아서 조사해봤다.
SQL_NO_CACHE는 MySQL의 쿼리 캐시 기능을 비활성화하는 힌트(hint) 명령어
캐시 사용 방지
사용 예시
SELECT SQL_NO_CACHE * FROM users;
사용하는 경우
장단점
EXPLAIN은 SQL 쿼리의 실행 계획을 분석하고 표시하는 명령어
예시
EXPLAIN SELECT SQL_NO_CACHE * FROM users;
주요 출력 정보
id: 실행 순서
select_type: SELECT 문의 유형
table: 참조되는 테이블
type: 조인 타입 (system, const, eq_ref, ref, range, index, ALL 등)
possible_keys: 사용 가능한 인덱스 목록
key: 실제 사용된 인덱스
key_len: 사용된 인덱스의 길이
rows: 검사한 행의 수
Extra: 추가 정보
type 컬럼의 주요 값들 (성능 좋은 순)
system > const > eq_ref > ref > range > index > ALL
system: 테이블에 단 하나의 행만 있는 경우
const: PRIMARY KEY나 UNIQUE 인덱스를 사용하는 경우
ALL: 전체 테이블 스캔 (가장 비효율적)
활용 목적
쿼리 성능 최적화
인덱스 사용 여부 확인
비효율적인 쿼리 패턴 발견
실행 계획 분석을 통한 병목 지점 파악
주의사항
실제 데이터를 반환하지 않고 실행 계획만 보여줌
데이터베이스 버전에 따라 출력 정보가 다를 수 있음
실제 실행 시간과는 차이가 있을 수 있음