RadarURL
Skip to content
2015.03.16 18:52

MySQL Query Cache 사용법

조회 수 418 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

MySQL에서는 반복되는 쿼리를 효율적으로 처리하기 위한 캐쉬가 존재한다.

바로 query cache인데 이는 까다로운 조건에 의해 동작하고 pruning 과정에서 meta 정보의 lock이 발생할 수 있어서 조심해서 사용해야 한다.

일단 동작하는 조건은 아래와 같다.

query cache에는 SQL문과 result set이 저장된다. 바로 이 cache에 저장되어 있는 SQL 문과 완전 동일(띄어쓰기까지..)하고 result set이 같은 쿼리가 수행될 때 query cache가 동작하고 result set을 바로 반환한다.

보통 개발자들은 위와 같은 조건을 간과하고 무작정 같은 쿼리를 수행하면 query cache를 쓰는 것으로 알고 사용한다.

그렇게 아무렇게나 쓰면 waiting query cache lock이라는 상태를 가진 프로세스로 인해 MySQL 서버가 hang이 걸릴 것이다…(오랜시간 고쳐지지 않고 있는 버그..)

이러한 상태에 빠지는 것을 방지하기 위해서는 꼭 query cache를 사용해야 하는 쿼리에만 사용하도록 옵션을 주어 사용할 수 있다.

 

query cache는 query_cache_type이라는 옵션을 통해 세 가지 타입을 제공한다.

OFF (0) ? Query cache를 사용하지 않는다.

ON (1) ? Query cache를 사용한다. (SQL_NO_CACHE 힌트를 사용하는 쿼리는 query cache를 사용하지 않는다.)

DEMAND (2) ? 선택한 쿼리만 query cache를 사용한다. (SQL_CACHE 힌트를 사용하는 쿼리는 query cache를 사용한다.)

 

위와 같은 설정은 my.cnf에서 설정 가능하고 세션 상에서도 설정이 가능하다.

# 세션에서 dynamic하게 설정하는 방법

 mysql> set global query_cache_type = 1;

 

# my.cnf에 설정 (재시작 시 적용)

[mysqld]

query_cache_type = 1;

설정은 숫자로 설정을 하거나 alias를 통해 설정이 가능하다.

 

query cache를 OFF할 경우에도 query_cache_size만큼 메모리를 할당하므로 해당 설정값을 0으로 설정하는 것을 권고한다.

query cache를 사용할 경우에는 query_cache_size를 1024의 배수로 설정해야 한다. 다른 값으로 설정할 경우 반올림하여 적용된다.

구조상 최소한 40KB 이상으로 설정해야 하며 적은 값으로 설정할 경우 warning이 발생한다.

해당 값은 아래와 같이 설정한다.

# 세션에서 dynamic하게 설정하는 방법

mysql> set global query_cache_size = 16*1024*1024;

 

# my.cnf에 설정 (재시작 시 적용)

[mysqld]

query_cache_size = 16M;



출처 : http://www.soonpenge.com/operate/12507175

TAG •
?

  1. mysql이 cpu를 많이 점유하고, DB와의 연결상태가 좋지 않을때

    Date2016.07.05 ByJAESOO Views123
    Read More
  2. Mysql slow-query를 이용한 로그 분석

    Date2015.03.17 ByJAESOO Views143
    Read More
  3. Mysql 데몬 문제 해결 방안 (cpulimit)

    Date2015.03.17 ByJAESOO Views172
    Read More
  4. 리눅스 실시간으로 로그 보기 tail 명령어

    Date2015.03.16 ByJAESOO Views733
    Read More
  5. mysql 5.5.x my.cnf 참고

    Date2015.03.16 ByJAESOO Views487
    Read More
  6. Mysql Slow query log 등록

    Date2015.03.16 ByJAESOO Views545
    Read More
  7. MYSQL 성능 향상 정리

    Date2015.03.16 ByJAESOO Views158
    Read More
  8. MySQL Query Cache 사용법

    Date2015.03.16 ByJAESOO Views418
    Read More
  9. Mysql 에서 Got a packet bigger than 'max_allowed_packet' bytes 오류

    Date2014.12.25 ByJAESOO Views181
    Read More
  10. MySQL 내부 변수 max_allowed_packet

    Date2014.12.25 ByJAESOO Views308
    Read More
  11. Mysql binary log 정리, 삭제 주기 설정

    Date2014.11.17 ByJAESOO Views299
    Read More
  12. MySQL 로그 파일 관리 2 - 로그 파일 남기기

    Date2014.11.17 ByJAESOO Views529
    Read More
  13. MySQL 로그 파일 관리 1 - 설정

    Date2014.11.17 ByJAESOO Views416
    Read More
  14. MySQL Binary Log 지우는 방법

    Date2014.11.17 ByJAESOO Views232
    Read More
  15. MySQL 설치/사용시 발생 에러 유형별 대처방법

    Date2014.11.17 ByJAESOO Views4003
    Read More
  16. Mysql 데이터 폴더의 mysql-bin.xxx 파일들 관련 삭제 및 초기화 방법

    Date2014.11.17 ByJAESOO Views288
    Read More
  17. MySQL my.cnf 파일 수정으로 mysql 서버 튜닝하기

    Date2014.07.07 ByJAESOO Views1685
    Read More
  18. MySQL에 원격 접속 허용

    Date2014.07.07 ByJAESOO Views1256
    Read More
  19. mysql에서 (테이블명) is marked as crashed and should be repaired 에러시

    Date2014.01.23 ByJaeSoo Views1280
    Read More
  20. 왜 MySQL 에서 InnoDB 를 써야하는가? InnoDB vs MyISAM 비교

    Date2013.04.12 ByJaeSoo Views3935
    Read More
Board Pagination Prev 1 2 Next
/ 2

PageViews   Today : 7198 Yesterday : 5037 Total : 21963250  /  Counter Status   Today : 6941 Yesterday : 4602 Total : 1189664

Edited by JAESOO

sketchbook5, 스케치북5

sketchbook5, 스케치북5

나눔글꼴 설치 안내


이 PC에는 나눔글꼴이 설치되어 있지 않습니다.

이 사이트를 나눔글꼴로 보기 위해서는
나눔글꼴을 설치해야 합니다.

설치 취소