Skip to content

2011.04.09 21:32

Mysql - Query Cache

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

단축키

Prev이전 문서

Next다음 문서

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

단축키

Prev이전 문서

Next다음 문서

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

MySQL 4.0.1부터 Query Cache라는 기능이 추가되었다.
이것은 최근에 실행된 select질의문과 그 결과를 메모리에 저장하는 기능이다.
자주 사용되는 질의문이라면 query cache로부터 결과값을 바로 불러들이므로 parsing, execution의 부하를 제거할 수 있다.
이때 사용되는 질의는 동일한 질의(identical queries)여야 적용된다.

query cache의 적용사례는 아주 풍부하다고 볼 수 있겠다.
뉴스의 헤드라인을 보여주거나, 게시판의 최근목록을 보여주는 메인페이지에 적용될 수 있다.
(테이블 변동이 자주 발생하지 않고 동일한 질의(identical queres)가 많은 경우)


* 동일한 질의(identical queries)
오라클의 경우가 같다고 생각하면 된다.
예를 들어, select * from test와 Select * from TEST는 대소문자가 다르므로 동일한 질의가 아니다.

1. 모든 문자(대소문자,스페이스,..)가 동일해야 한다.
2. 사용하는 데이터베이스, 통신프로토콜, 캐릭터셋이 동일해야 한다.

데이터가 변경되면, query cache내에 있는 관련된 모든 엔트리들이 flush되어지므로 항상 최신의 데이터를 가지고 있게 된다. 따라서, query cache가 잘못된 데이터(stale data:변경사항이 반영되지 않은 데이터)를 반환하는 경우는 없다.


query cache는 디폴트로 disable(query_cache_size=0)되어 있는데, query cache와 관련된 변수는 다음과 같다.
보통 query_cache_size변수값만 설정해주고, 나머지 변수들은 디폴트로 두면 된다.

query_cache_limit : 저장가능한 최대 results크기(디폴트:1M) 보통 query_cache_size의 1~10%정도 설정
query_cache_size  : results를 저장하기 위해 메모리 할당량. 0으로 지정하면 query cache를 disable함
query_cache_type  : 0(OFF)   : results를 캐쉬하거나 retrieve하지 않음.
                    1(ON)    : select sql_no_cache.. 쿼리를 제외한 모든 results를 캐쉬
                    2(DEMAND): select sql_cache... 쿼리만 캐쉬

설정파일
Unix: /etc/my.cnf
윈도: c:\winnt\my.ini(windows 2000인 경우)

설정예
query_cache_size = 0        (disable)
query_cache_size = 512K     (512 Kbytes)
query_cache_size = 10M      (10 Mbytes)


Query Cache와 관련된 명령어

flush query cache : query cache를 defragment
reset query cache : query cache를 clear
flush tables      : query cache를 flush
show status       : query cache 성능 모니터링

show status로 나온 변수중 query cache와 관련된 변수와 설명은 다음과 같다.
Qcache_queries_in_cache : 캐쉬내 등록된 쿼리수
Qcache_inserts          : 캐쉬에 추가된 쿼리수
Qcache_hits             : 캐쉬 히트수
Qcache_lowmem_prunes    : 메모리부족으로 인해 캐쉬로부터 삭제된 쿼리수
Qcache_not_cached       : 캐쉬되어지지 않은 쿼리수(query_cache_type으로 인한 경우나 캐쉬될수 없는 것일 경우)
Qcache_free_memory      : query cache의 free 메모리량
Qcache_total_blocks     : query cache가 가진 총블럭수
Qcache_free_blocks      : query cache가 가진 free 메모리 블럭수

총 쿼리수 = Qcache_inserts + Qcache_hits + Qcache_not_cached

Qcache_lowmem_prunes 변수값이 크다면 query cache 메모리가 부족하다는 의미이므로 query_cache_size를 늘여줄 필요가 있다.


query cache 되지 않는 경우

1. 질의가 다음의 함수를 포함할때
User-Defined Functions  
CONNECTION_ID  
FOUND_ROWS  
GET_LOCK  
RELEASE_LOCK  
LOAD_FILE  
MASTER_POS_WAIT  
NOW  
SYSDATE  
CURRENT_TIMESTAMP  
CURDATE  
CURRENT_DATE  
CURTIME  
CURRENT_TIME  
DATABASE  
ENCRYPT (with one parameter)  
LAST_INSERT_ID  
RAND  
UNIX_TIMESTAMP (without parameters)  
USER  
BENCHMARK  

2. mysql system database에 참조하거나 user variable을 포함할때

3. select ... in share mode이거나 select * from autoincrement_field is null 형태일때
TAG •

List of Articles
번호 제목 글쓴이 날짜 조회 수
86 MySQL 특정 테이블만 백업하기 ADMINPLAY 2014.01.06 8937
85 InnoDB 에서 MyISAM 으로, 혹은 MyISAM 에서 InnoDB 로 DB 타입 변경 방법 ADMINPLAY 2013.11.08 8015
84 mysql 5.5.x my.cnf 참고 ADMINPLAY 2013.09.24 9497
83 [우분투] mysql, data 디렉토리 변경 file ADMINPLAY 2013.09.24 15412
82 MySQL 테이블명 대소문자 구분안하기 file l2zeo 2013.01.21 11161
81 phpMyAdmin 에서 icon 과 text 중 icon 만 보이게 하기 1 file l2zeo 2013.01.21 12012
80 innodb recovery file l2zeo 2013.01.21 11334
79 mysql 다중 서버 관리 ADMINPLAY 2012.12.17 17438
78 MySQL 튜닝 값을 탐지해주는 유용한 툴 file ADMINPLAY 2012.02.23 22541
77 mysql - copying to tmp table ADMINPLAY 2012.01.16 18294
76 [데이터베이스] [DBMS-MYSQL] "SHOW PROCESSLIST"시 state 종류 및 설명 ADMINPLAY 2012.01.16 16074
75 MYSQL 4.0 --> 5.1 마이그레이션 ADMINPLAY 2012.01.16 17324
74 [MySQL 5.1.4] /bin/rm: cannot remove `libtoolT': No such file or directory ADMINPLAY 2012.01.16 18584
73 MySQL 튜닝 query cache 설정 ADMINPLAY 2011.04.09 19606
» Mysql - Query Cache ADMINPLAY 2011.04.09 18564
71 FULLTEXT 인덱스와 서치 ADMINPLAY 2011.04.09 17614
70 MySQL에서 Query Cache 사용하기 ADMINPLAY 2011.03.18 16010
69 MySQL의 호스트 블럭킹 & max_connect_errors ADMINPLAY 2011.03.09 17953
68 ../depcomp: line 571: exec: g++: not found ADMINPLAY 2010.11.26 19726
67 libmysqlclient.so.15: cannot open shared object file: No such file or directory ADMINPLAY 2010.07.07 23087
Board Pagination Prev 1 2 3 4 5 Next
/ 5

Copyright ADMINPLAY corp. All rights reserved.

abcXYZ, 세종대왕,1234

abcXYZ, 세종대왕,1234