MySQL - 쿼리 속도를 테스트하기 위해 캐시를 사용하지 않음
MySQL에서 쿼리 속도를 테스트하고 있습니다.데이터베이스가 이러한 쿼리를 캐싱하고 있기 때문에 쿼리 속도를 테스트할 때 신뢰할 수 있는 결과를 얻기가 어렵습니다.
쿼리의 캐시를 비활성화하는 방법이 있습니까?
시스템: MySQL 4(Linux 웹호스팅), 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
http://dev.mysql.com/tech-resources/articles/mysql-query-cache.html에서 "MySQL Query Cache 사용을 위한 전제조건 및 주의사항"을 참조하십시오.
query_cache_size=0 구성 옵션도 있습니다.
서버 부팅 시 쿼리 캐시를 비활성화하려면 query_cache_size 시스템 변수를 0으로 설정합니다.쿼리 캐시 코드를 디세블로 하면 현저한 오버헤드가 발생하지 않습니다.소스에서 MySQL을 빌드하는 경우 --without-query-cache 옵션을 사용하여 구성을 호출하여 쿼리 캐시 기능을 서버에서 완전히 제외할 수 있습니다.
http://dev.mysql.com/doc/refman/5.1/en/query-cache.html 를 참조해 주세요.
다음 명령을 실행하여 쿼리 캐시를 재설정할 수도 있습니다.
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;
Query 캐시를 비활성화하려면 mysql 구성 파일에서 'query_cache_size'를 0으로 설정합니다.설정된 0 mysql일 경우 쿼리 캐시를 사용하지 않습니다.
좋은 답변도 있지만, 중요한 경고가 있습니다.
mysql 쿼리는 캐시되지 않을 수 있지만 기본 O는 차단되지 않습니다.디스크에 대한 액세스를 메모리에 캐싱합니다.이는 일부 쿼리의 경우 특히 회전 디스크에서 데이터를 가져와야 하는 경우 크게 느려질 수 있습니다.
따라서 위의 방법을 사용하는 것이 좋지만, 디스크에서 디스크/메모리 캐시로 풀리지 않는 데이터/범위 세트를 매번 사용하여 테스트합니다.
SQL 문자열을 변경해야 합니다.SQL 문자열은 캐시 키이기 때문입니다.예를 들어 SQL 설명에 타임스탬프를 추가합니다.
PHP의 기능:
function db_RunSQL($SQL, $NoCacheMode=false)
{
$SQL = (($NoCacheMode) ? '/*'.time().'*/ ' : '') . $SQL;
return mysqli_query(db_SavedConnect(), $SQL);
}
언급URL : https://stackoverflow.com/questions/181894/mysql-force-not-to-use-cache-for-testing-speed-of-query
'programing' 카테고리의 다른 글
python에 math nCr 함수가 있나요? (0) | 2023.02.06 |
---|---|
대소문자를 구분하지 않는 PHP in_array 함수 (0) | 2023.02.06 |
도커가 다른 사용자로 localhost에서 mariadb에 연결할 수 없습니다. (0) | 2023.01.31 |
일시적 수식어와 휘발성 수식어가 뭐죠? (0) | 2023.01.31 |
MySql에 대한 Java 길이 (0) | 2023.01.31 |