8.9.3.4 쿼리 캐시의 상태 및 유지 보수
MySQL 서버에 쿼리 캐시가 존재하는지 여부를 확인하려면 다음 문을 사용합니다.
mysql>
SHOW VARIABLES LIKE 'have_query_cache';
+------------------+-------+ | Variable_name | Value | +------------------+-------+ | have_query_cache | YES | +------------------+-------+
FLUSH QUERY CACHE
명령문은 쿼리 캐시를 조각하고 그 메모리의 사용을 개선 할 수 있습니다. 이 문은 캐시에서 쿼리를 삭제하지 않습니다.
RESET QUERY CACHE
문은 쿼리 캐시에서 모든 쿼리 결과를 삭제합니다. FLUSH TABLES
명령문도이를 실행합니다.
쿼리 캐시의 성능을 모니터하려면 SHOW STATUS
를 사용하여 캐시 상태 변수를 표시합니다.
mysql> SHOW STATUS LIKE 'Qcache%';
+-------------------------+--------+
| Variable_name | Value |
+-------------------------+--------+
| Qcache_free_blocks | 36 |
| Qcache_free_memory | 138488 |
| Qcache_hits | 79570 |
| Qcache_inserts | 27087 |
| Qcache_lowmem_prunes | 3114 |
| Qcache_not_cached | 22989 |
| Qcache_queries_in_cache | 415 |
| Qcache_total_blocks | 912 |
+-------------------------+--------+
이러한 각 변수의 설명은 섹션 5.1.6 "서버 상태 변수" 에 있습니다. 여기에서는 그 중 일부의 사용 방법에 대해 설명합니다.
SELECT
쿼리의 총 수는 다음 식으로 얻을 수 있습니다.
Com_select + Qcache_hits + queries with errors found by parser
Com_select
값은 다음 식으로 얻을 수 있습니다.
Qcache_inserts + Qcache_not_cached + queries with errors found during the column-privileges check
쿼리 캐시는 가변 블록을 사용하기 때문에 Qcache_total_blocks
및 Qcache_free_blocks
에 쿼리 캐시 메모리 단편화가 나타날 수 있습니다. FLUSH QUERY CACHE
후에는 여유 블록이 하나 남아 있습니다.
캐시 된 모든 쿼리에는 적어도 2 개의 블록 (하나는 쿼리 텍스트 용으로 1 개는 쿼리 결과 용)가 필요합니다. 또한 쿼리에서 사용되는 각 테이블에 하나의 블록이 필요합니다. 그러나 여러 쿼리에서 동일한 테이블을 사용하는 경우, 하나의 테이블 블록 만 할당해야합니다.
Qcache_lowmem_prunes
상태 변수에 의해 제공되는 정보는 쿼리 캐시 크기를 조정하는 데 도움이 될 수 있습니다. 그것은 새로운 쿼리 캐시를위한 메모리를 확보하기 위해 캐시에서 삭제 된 쿼리 수를 계산합니다. 쿼리 캐시는 LRU (Least Recently Used) 전략을 사용하여 캐시에서 삭제하는 쿼리를 결정합니다. 튜닝 정보는 섹션 8.9.3.3 "쿼리 캐시 구성" 에 있습니다.