
메모리가 충분하다고 가정해 보겠습니다.
MySQL은 캐시에서 가져올지 아니면 다시 쿼리할지 어떻게 결정합니까?
답변1
AFAIK mysql은 테이블이 변경될 때(삽입, 업데이트, 삭제 등) 캐시되어 자동으로 만료됩니다.
mysql은 일반적으로 query_cache_limit 및 크기에 따라 즉시 캐시하며 기본 query_cache_limit는 1M이므로 개별 쿼리가 커지면 변경하지 않는 한 캐시하지 않습니다.
대소문자를 구분하는 쿼리를 고려하므로 쿼리도 동일한지 확인해야 합니다.
그 외에도 다음 명령을 사용하여 모니터링할 수 있습니다.
SHOW STATUS LIKE '%qcache%';
예를 들어 일부 항목이 포함된 테이블을 만들고 다음을 실행합니다.
SELECT id,name FROM my_table WHERE id > '2'; SHOW STATUS LIKE '%qcache%';
캐시된 쿼리 수가 1씩 증가했다는 것을 알 수 있습니다. 이제 동일한 선택을 다시 실행하면 mysql이 이미 캐시를 사용하고 있으며 결과가 훨씬 더 빠르게 발생하는 것을 볼 수 있습니다.
추가 정보
query-cache-type = 1
먼저 OS/설치에 따라 my.cnf 또는 my.ini가 있는지 확인해야 합니다 .
mysql에서 다음 명령을 실행하여 상태를 확인할 수 있습니다.
SHOW VARIABLES LIKE '%query_cache%';
데이터를 나열할 때 쿼리 캐시 크기가 표시됩니다. 이 크기가 0으로 설정되면 쿼리 캐시가 비활성화되었음을 의미합니다. 이 변수는 쿼리 캐시에 사용되는 메모리(바이트)를 결정합니다.
따라서 query-cache-type에 대해 했던 것처럼 my.cnf 또는 my.ini에 다음을 추가하세요.
query-cache-size = 40M