MySQL에서 일부 쿼리의 속도를 테스트하고 있습니다. 데이터베이스는 이러한 쿼리를 캐싱하여 이러한 쿼리의 속도를 테스트 할 때 신뢰할 수있는 결과를 얻기가 어렵습니다.
쿼리 캐싱을 비활성화하는 방법이 있습니까?
시스템 : Linux 웹 호스팅의 MySQL 4, PHPMyAdmin에 액세스 할 수 있습니다.
감사
MySQL에서 일부 쿼리의 속도를 테스트하고 있습니다. 데이터베이스는 이러한 쿼리를 캐싱하여 이러한 쿼리의 속도를 테스트 할 때 신뢰할 수있는 결과를 얻기가 어렵습니다.
쿼리 캐싱을 비활성화하는 방법이 있습니까?
시스템 : Linux 웹 호스팅의 MySQL 4, PHPMyAdmin에 액세스 할 수 있습니다.
감사
답변:
쿼리에서 SQL_NO_CACHE (MySQL 5.7) 옵션을 사용해보십시오 . (MySQL 5.6 사용자는 여기를 클릭하십시오 )
예.
SELECT SQL_NO_CACHE * FROM TABLE
이렇게하면 MySQL 캐싱 결과가 중지되지만 다른 OS 및 디스크 캐시도 성능에 영향을 줄 수 있습니다. 이것들은 돌아 다니기가 더 어렵습니다.
현재 날짜 / 시간에 대한 참조는 해당 선택에 대한 쿼리 캐시를 비활성화합니다.
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
쿼리 내에서 사용자 정의 변수를 사용하면 쿼리를 다시 캐시 할 수 없습니다. 나는 그것을 사용하는 것보다 훨씬 더 좋은 지표를 찾았습니다 SQL_NO_CACHE
. 그러나 변수 설정이 성능에 크게 영향을 미치지 않는 곳에 변수를 배치해야합니다.
SELECT t.*
FROM thetable t, (SELECT @a:=NULL) as init;
SQL_NO_CACHE
." 어떻게 요? 명백한 키워드가 주장하는 것을 수행하지 않는 한 명시 적 키워드에 대해 모호한 해킹을 사용하려면 꽤 강력한 사례가 필요한 것 같습니다.