[mysql] MySQL-쿼리 속도 테스트를 위해 캐시를 사용하지 마십시오

MySQL에서 일부 쿼리의 속도를 테스트하고 있습니다. 데이터베이스는 이러한 쿼리를 캐싱하여 이러한 쿼리의 속도를 테스트 할 때 신뢰할 수있는 결과를 얻기가 어렵습니다.

쿼리 캐싱을 비활성화하는 방법이 있습니까?

시스템 : Linux 웹 호스팅의 MySQL 4, PHPMyAdmin에 액세스 할 수 있습니다.

감사



답변

쿼리에서 SQL_NO_CACHE (MySQL 5.7) 옵션을 사용해보십시오 . (MySQL 5.6 사용자는 여기를 클릭하십시오 )

예.

SELECT SQL_NO_CACHE * FROM TABLE

이렇게하면 MySQL 캐싱 결과가 중지되지만 다른 OS 및 디스크 캐시도 성능에 영향을 줄 수 있습니다. 이것들은 돌아 다니기가 더 어렵습니다.


답변

현재 연결에만 영향을 미치는 다른 대안 :

SET SESSION query_cache_type=0;


답변

현재 날짜 / 시간에 대한 참조는 해당 선택에 대한 쿼리 캐시를 비활성화합니다.

SELECT *,NOW() FROM TABLE

“MySQL 쿼리 캐시 사용을위한 전제 조건 및 참고 사항”@ http://dev.mysql.com/tech-resources/articles/mysql-query-cache.html을 참조하십시오.


답변

구성 옵션도 있습니다 : query_cache_size = 0

서버 시작시 쿼리 캐시를 비활성화하려면 query_cache_size 시스템 변수를 0으로 설정하십시오. 쿼리 캐시 코드를 비활성화하면 눈에 띄는 오버 헤드가 없습니다. 소스에서 MySQL을 빌드하는 경우 –without-query-cache 옵션으로 configure를 호출하여 쿼리 캐시 기능을 서버에서 완전히 제외 할 수 있습니다.

http://dev.mysql.com/doc/refman/5.1/en/query-cache.html을 참조 하십시오


답변

follow 명령을 실행하여 쿼리 캐시를 재설정 할 수도 있습니다.

RESET QUERY CACHE


답변

한 가지 문제

SELECT SQL_NO_CACHE * FROM TABLE

방법은 쿼리 결과가 캐시되는 것을 막는 것 같습니다. 그러나 테스트하려는 쿼리에 적극적으로 사용중인 데이터베이스를 쿼리하는 경우 다른 클라이언트가 쿼리를 캐시하여 결과에 영향을 줄 수 있습니다. 나는이 문제를 계속 연구하고 있으며,이 게시물을 알아 내면이 게시물을 편집 할 것입니다.


답변

나는 다음을 사용한다 :

SHOW VARIABLES LIKE 'query_cache_type';
SET SESSION query_cache_type = OFF;
SHOW VARIABLES LIKE 'query_cache_type';