DB

[MySQL] RESET QUERY CACHE 완벽 가이드 사용법(쿼리 캐시 초기화)

인생아 2025. 2. 18. 09:42
반응형

MySQL에서는 쿼리 결과를 저장하여 성능을 향상시키는 "쿼리 캐시(Query Cache)" 기능을 제공합니다. 하지만 특정한 경우 쿼리 캐시를 초기화(리셋)해야 할 필요가 있습니다.

RESET QUERY CACHE란?

MySQL의 RESET QUERY CACHE 명령어는 쿼리 캐시 메모리를 초기화하는 역할을 합니다. 이를 통해 기존에 저장된 쿼리 결과를 모두 삭제하고, 새롭게 캐시를 사용할 수 있도록 준비할 수 있습니다.

쿼리 캐시(Query Cache)란?

쿼리 캐시는 동일한 SELECT 문이 실행될 때 기존 결과를 재사용하여 데이터베이스 성능을 최적화하는 기능입니다.
즉, 동일한 쿼리가 실행될 경우 MySQL이 저장된 결과를 반환하여, 데이터베이스에서 불필요한 연산을 줄이고 실행 속도를 높이는 효과를 줍니다.

예를 들어, 아래와 같은 SELECT 문을 실행하면 MySQL은 그 결과를 캐시에 저장합니다.

SELECT * FROM employees WHERE department = 'Sales';

 

만약 동일한 쿼리를 다시 실행하면, MySQL은 기존에 저장된 캐시 데이터를 반환하여 성능을 최적화합니다.

하지만, 특정한 경우 쿼리 캐시를 초기화해야 하는 상황이 발생할 수 있습니다.

반응형

RESET QUERY CACHE의 필요성

쿼리 캐시는 무조건 좋은가?

  • 데이터 변경이 빈번한 경우 쿼리 캐시가 오래된 데이터를 반환할 수 있음
  • 메모리 사용량 증가로 인해 MySQL 성능이 저하될 가능성이 있음

RESET QUERY CACHE를 사용해야 하는 상황

  1. 테이블의 데이터가 변경되었는데도, 기존 캐시된 데이터가 반환될 경우
  2. 쿼리 캐시 메모리 조각화(Fragmentation)로 인해 성능 저하가 발생할 경우
  3. 쿼리 캐시를 테스트하는 과정에서 모든 캐시 데이터를 삭제하고 싶을 경우

이제 RESET QUERY CACHE의 사용 방법을 살펴보겠습니다.

RESET QUERY CACHE 기본 문법

RESET QUERY CACHE;
  • 쿼리 캐시 메모리를 초기화하며, 기존에 저장된 모든 쿼리 결과가 삭제됩니다.
반응형

RESET QUERY CACHE 예제 및 실행 결과

1. 캐시가 적용된 상태 확인

먼저 쿼리 캐시를 활성화하고, 쿼리 캐시의 현재 상태를 확인해보겠습니다.

SHOW VARIABLES LIKE 'query_cache_type';
SHOW VARIABLES LIKE 'query_cache_size';

실행 결과 예시

+------------------+----------+
| Variable_name    | Value    |
+------------------+----------+
| query_cache_type | ON       |
| query_cache_size | 16777216 |
+------------------+----------+

위와 같이 query_cache_type이 ON이라면 쿼리 캐시가 활성화된 상태입니다.

2. 캐시된 쿼리 결과 확인

SELECT SQL_NO_CACHE * FROM employees WHERE department = 'Sales';
SHOW STATUS LIKE 'Qcache_hits';

Qcache_hits 값은 쿼리 캐시에서 반환된 쿼리 수를 나타내며, 값이 증가하면 캐시가 정상적으로 작동하고 있다는 의미입니다.

3. RESET QUERY CACHE 실행 및 효과 확인

이제 쿼리 캐시를 초기화해보겠습니다.

RESET QUERY CACHE;
SHOW STATUS LIKE 'Qcache_free_blocks';

실행 결과 예시

+-----------------------+-------+
| Variable_name         | Value |
+-----------------------+-------+
| Qcache_free_blocks    | 10    |
+-----------------------+-------+

RESET QUERY CACHE를 실행하면 쿼리 캐시가 초기화되고, 새로운 데이터를 캐싱할 준비가 됩니다.

반응형

RESET QUERY CACHE vs FLUSH QUERY CACHE 차이점

명령어 기능 차이점
RESET QUERY CACHE 쿼리 캐시 메모리 전체를 초기화하며, 기존 캐시된 데이터 삭제
FLUSH QUERY CACHE 사용하지 않는 캐시 블록만 정리하고 기존 데이터 유지

즉, RESET QUERY CACHE는 전체 초기화, FLUSH QUERY CACHE는 부분 정리입니다.

RESET QUERY CACHE 실행 시 주의사항

1. 불필요하게 자주 실행하지 않도록 주의

  • RESET QUERY CACHE를 실행하면 기존에 저장된 캐시 데이터가 사라지므로, 데이터베이스 성능이 순간적으로 저하될 수 있음
  • 데이터 변경이 많거나 쿼리 캐시의 조각화가 심할 때만 실행하는 것이 좋음

2. 쿼리 캐시가 비활성화된 경우 실행해도 효과 없음

  • query_cache_type이 OFF로 설정된 경우 RESET QUERY CACHE를 실행해도 쿼리 캐시는 사용되지 않음
  • 먼저 쿼리 캐시가 활성화되어 있는지 확인 필요
SHOW VARIABLES LIKE 'query_cache_type';

3. MySQL 8.0에서는 쿼리 캐시 기능이 제거됨

  • MySQL 8.0에서는 성능 최적화를 이유로 쿼리 캐시 기능 자체가 삭제
  • MySQL 8.0 이상에서는 RESET QUERY CACHE를 사용할 수 없음
반응형

MySQL 8.0 이상에서 캐시 최적화 대안

  • InnoDB Buffer Pool 활용
  • ProxySQL을 통한 캐시 적용
  • 애플리케이션 레벨에서 Redis나 Memcached 사용

결론

RESET QUERY CACHE쿼리 캐시를 초기화하여 MySQL의 캐시 성능을 최적화하는 중요한 명령어입니다.
하지만 무분별한 사용은 MySQL 성능 저하를 유발할 수 있으므로, 캐시 사용량과 메모리 상태를 고려하여 적절히 활용하는 것이 중요합니다.

MySQL 8.0 이상에서는 쿼리 캐시가 제거되었으므로, 대체 캐싱 전략을 고려하는 것이 필요합니다.

참고 자료

공식 가이드 문서: https://dev.mysql.com/doc/refman/5.7/en/query-cache.html

반응형