Programing

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

lottogame 2020. 3. 6. 08:18
반응형

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';

쿼리 내에서 사용자 정의 변수를 사용하면 쿼리를 다시 캐시 할 수 없습니다. 나는 그것을 사용하는 것보다 훨씬 더 좋은 지표를 찾았습니다 SQL_NO_CACHE. 그러나 변수 설정이 성능에 크게 영향을 미치지 않는 곳에 변수를 배치해야합니다.

SELECT t.*
FROM thetable t, (SELECT @a:=NULL) as init;

쿼리 캐시를 비활성화하려면 mysql 구성 파일에서 'query_cache_size'를 0으로 설정하십시오. 설정이 0이면 mysql은 쿼리 캐시를 사용하지 않습니다.

참고 URL : https://stackoverflow.com/questions/181894/mysql-force-not-to-use-cache-for-testing-speed-of-query



반응형