• 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문 최적화
    3. 최적화 및 인덱스
    4. 데이터베이스 구조의 최적화
    5. InnoDB 테이블의 최적화
    6. MyISAM 테이블의 최적화
    7. MEMORY 테이블 최적화
    8. 쿼리 실행 계획의 이해
    9. 버퍼링과 캐시
    1. InnoDB 버퍼 풀
    2. MyISAM 키 캐시
    3. MySQL 쿼리 캐시
    1. 쿼리 캐시 동작
    2. 쿼리 캐시 SELECT 옵션
    3. 쿼리 캐시 구성
    4. 쿼리 캐시의 상태 및 유지 보수
    4. 준비된 문 및 저장 프로그램 캐시
    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.9.3.3 쿼리 캐시 구성

have_query_cache 서버 시스템 변수는 쿼리 캐시를 사용할 수 있는지 여부를 나타냅니다.

mysql> SHOW VARIABLES LIKE 'have_query_cache';
+------------------+-------+
| Variable_name    | Value |
+------------------+-------+
| have_query_cache | YES   |
+------------------+-------+

표준 MySQL 바이너리를 사용하는 경우 쿼리 캐시가 비활성화되어있는 경우이 값은 항상 YES 입니다.

다른 몇개의 시스템 변수는 쿼리 캐시 조작을 제어합니다. 이들은 mysqld를 시작할 때 옵션 파일 또는 명령 행에서 설정할 수 있습니다. 쿼리 캐시 시스템 변수 모두 query_cache_ 로 시작하는 이름을 가지고 있습니다. 그 내용은 여기에서 제공하는 추가 구성 정보와 함께 섹션 5.1.4 "서버 시스템 변수" 에서 간략하게 설명하고 있습니다.

쿼리 캐시 크기를 설정하려면 query_cache_size 시스템 변수를 설정합니다. 그것을 0으로 설정하면 query_cache_type=0 을 설정하는 것과 마찬가지로, 쿼리 캐시가 비활성화됩니다. 기본적으로 쿼리 캐시는 비활성화됩니다. 이것은 1M 기본 크기와 0의 query_cache_type 기본값을 사용하여 수행됩니다. (MySQL 5.6.8 이전에서는 1의 기본 query_cache_type 에서 기본 크기는 0입니다.)

오버 헤드를 크게 절감하려면 쿼리 캐시를 사용하지 않는 경우에 query_cache_type=0 에서 서버를 시작합니다.

참고

Windows Configuration Wizard를 사용하여 MySQL을 설치하거나 구성 할 경우, query_cache_size 의 기본값이 사용 가능한 다양한 구성의 종류에 따라 자동으로 구성됩니다. Windows Configuration Wizard를 사용하는 경우 선택한 구성에 대한 쿼리 캐시가 활성화된다 (즉 0이 아닌 값으로 설정된다) 수 있습니다. 쿼리 캐시는 query_cache_type 변수의 설정에 의해 제어됩니다. 구성이 이루어진 후에, my.ini 파일에 설정된이 변수의 값을 확인하십시오.

query_cache_size 를 0이 아닌 값으로 설정하는 경우 그 구조를 할당하기 위해 쿼리 캐시에 약 40KB의 최소 크기가 필요하다는 것을 기억하십시오. (정확한 크기는 시스템 아키텍처에 따라 다릅니다.) 너무 작은 값을 설정하면이 예제처럼 경고를받습니다.

 mysql> SET GLOBAL query_cache_size = 40000;
 Query OK, 0 rows affected 1 warning (0.00 sec)

 mysql> SHOW WARNINGS\G
 *************************** 1. row ******************** *******
   Level : Warning
    Code : 1282
 Message : Query cache failed to set size 39936;
          new query cache size is 0

 mysql> SET GLOBAL query_cache_size = 41984;
 Query OK, 0 rows affected (0.00 sec)

 mysql> SHOW VARIABLES LIKE 'query_cache_size';
+------------------+-------+
| Variable_name    | Value |
+------------------+-------+
| query_cache_size | 41984 |
+------------------+-------+

쿼리 캐시에서 실제로 쿼리 결과를 유지할 수 있도록하려면 그 크기를 크게 설정해야합니다.

 mysql> SET GLOBAL query_cache_size = 1000000;
 Query OK, 0 rows affected (0.04 sec)

 mysql> SHOW VARIABLES LIKE 'query_cache_size';
+------------------+--------+
| Variable_name    | Value  |
+------------------+--------+
| query_cache_size | 999424 |
+------------------+--------+
1 row in set (0.00 sec)

query_cache_size 값은 가장 가까운 1024 바이트 블록으로 조정됩니다. 따라서보고되는 값은 할당 된 값과 다를 수 있습니다.

쿼리 캐시의 크기가 0보다 큰 경우, query_cache_type 변수는 그 동작에 영향을줍니다. 이 변수는 다음 값으로 설정할 수 있습니다.

  • 0 또는 OFF 의 값은 캐시 나 캐시 된 결과의 취득을 방해합니다.

  • 1 또는 ON 값은 SELECT SQL_NO_CACHE 로 시작 문장을 제외한 캐시를 사용합니다.

  • 2 또는 DEMAND 값은 SELECT SQL_CACHE 로 시작 문만 캐시시킵니다.

query_cache_size 가 0이면 query_cache_type 변수 0으로 설정하십시오. 이 경우 서버는 쿼리 캐시 상호 배타 락을 전혀 획득하지 않습니다. 이것은 런타임에 쿼리 캐시를 사용할 수 없으며 쿼리 실행의 오버 헤드가 감소되는 것을 의미합니다.

GLOBAL query_cache_type 값을 설정하면 변경 한 후에 연결된 모든 클라이언트의 쿼리 캐시 동작이 결정됩니다. SESSION query_cache_type 값을 설정하여 각 클라이언트는 고유의 연결 캐시 동작을 제어 할 수 있습니다. 예를 들어, 클라이언트는 다음과 같이 자신의 쿼리에 대한 쿼리 캐시 사용을 해제 할 수 있습니다.

 mysql> SET SESSION query_cache_type = OFF;

서버가 시작될 때 ( SET 문을 사용하여 런타임이 아니라)에 query_cache_type 을 설정하는 경우 숫자 만 허용됩니다.

캐시 가능한 개별 쿼리 결과의 최대 크기를 제어하려면 query_cache_limit 시스템 변수를 설정합니다. 기본값은 1M 바이트입니다.

캐시를 너무 크기로 설정하지 마십시오. 업데이트시 캐시 잠금 스레드의 필요성 때문에 매우 큰 캐시에서 잠금 경합 문제가 볼 수 있습니다.

참고

명령 행 또는 구성 파일에 --maximum-query_cache_size= 32M 옵션을 사용하여 SET 문 실행시 쿼리 캐시에 지정할 수있는 최대 크기를 설정할 수 있습니다.

쿼리가 캐시되도록하면 그 결과 (클라이언트로 전송 된 데이터)가 결과의 취득시에 쿼리 캐시에 저장됩니다. 따라서 데이터는 일반적으로 하나의 큰 묶음으로 처리되지 않습니다. 쿼리 캐시는 필요시이 데이터를 저장하기위한 블록을 할당하기 때문에 하나의 블록이 가득 차면 새로운 블록이 할당됩니다. 메모리 할당 작업 비용 (시간적)이 걸리기 때문에 쿼리 캐시는 query_cache_min_res_unit 시스템 변수에 의해 지정된 최소 크기로 블록을 할당합니다. 쿼리가 실행되면 사용되지 않은 메모리가 해제되도록, 마지막 결과 블록은 실제 데이터 크기로 트리밍됩니다. 서버에서 실행되는 쿼리의 종류에 따라서는 query_cache_min_res_unit 값을 튜닝하는 것이 유효하다고 알 수 있습니다.

  • query_cache_min_res_unit 의 기본값은 4K 바이트입니다. 대부분의 경우 이것으로 충분하다 것입니다.

  • 작은 결과 대량의 쿼리가있는 경우, 다수의 빈 블록에 도시 된 바와 같이 기본 블록 크기는 메모리 조각화가 발생할 수 있습니다. 조각은 메모리 부족으로 인해 쿼리 캐시 캐시에서 쿼리를 강제로 정리 (삭제) 할 수 있습니다. 이 경우 query_cache_min_res_unit 값을 줄입니다. 여유 블록과 가지 치기에 의해 삭제 된 쿼리의 숫자는 Qcache_free_blocks 와 Qcache_lowmem_prunes 상태 변수의 값에 의해 얻을 수 있습니다.

  • 대부분의 쿼리의 결과가 큰 ( Qcache_total_blocks 및 Qcache_queries_in_cache 상태 변수를 체크합니다) 경우 query_cache_min_res_unit 를 늘려 성능을 향상시킬 수 있습니다. 그러나 크게 초과하지 않도록하십시오 (이전 항목을 참조하십시오).


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