2011-01-14 5 views
0

웹 응용 프로그램에서 매우 느린 MySQL 쿼리를 발견했습니다.재시작시 신비한 MySQL 캐싱의 경우

mysql> show variables like 'query%'; 
+------------------------------+---------+ 
| Variable_name    | Value | 
+------------------------------+---------+ 
| query_alloc_block_size  | 8192 | 
| query_cache_limit   | 1048576 | 
| query_cache_min_res_unit  | 4096 | 
| query_cache_size    | 0  | 
| query_cache_type    | ON  | 
| query_cache_wlock_invalidate | OFF  | 
| query_prealloc_size   | 8192 | 
+------------------------------+---------+ 

짝수 괴상 것은이 속도 증가가 지속되는 : 이상한 점은 쿼리가 너무처럼 QUERY_CACHE가 기본 (query_cache_type을 0)로 설정되어 있음에도 불구하고, 그것을 실행 이번이 처음이 저하된다는 것이다 MySQL 서버가 멈추고 다시 시작된 후에도 (OSX를 사용하고 있으며 시스템 환경 설정 패널을 사용하여이 재시작을 수행합니다.) 초기 쿼리의 성능을 저하시킬 수있는 유일한 방법은 시스템을 재부팅하는 것입니다.

내 질문은 이렇습니다. 어떻게 이런 일이 발생합니까? 분명히 직장에서 캐싱의 일종이지만, 어디에서? 그리고 데이터베이스를 다시 시작한 후에도 어떻게 지속됩니까? 이 쿼리는 PHP/Apache를 통해 제공되는 웹 응용 프로그램을 통해 중재되지만 별도의 종소리와 호루라기가 없으며 호기심 많은 캐싱은 Apache가 다시 시작될 때까지 지속됩니다.

도움 말?

답변

2

추측되는 파일을 캐싱 운영 체제, 또는 하드 디스크,

+0

내가 OS 버퍼 캐시는 추측하지 말 것; 대신, 그것은 매우 정확할 가능성이 큽니다. HDD 캐시는 일반적으로 매우 작습니다. – derobert

+0

이 경우라면 시스템을 실행하는 동안 오랜 시간 기다려야 만 OS가 모든 것을 캐시 할 수 있다고 생각합니다. 더구나, 나는 쿼리의 다양한 풍미가 모두 동일한 테이블을 사용하고 레코드가 연속적이지 않기 때문에 운영 체제가 테이블 내의 특정 레코드를 캐시하는 방법을 모릅니다. 따라서 섹터를 빨아 먹을 수있는 것과 같지 않습니다. 그것으로 끝났다. 당신이 틀렸다고 말하는 것은 아니지만, 맞다면 OS 캐싱이 마술에 다가 갈 것입니다. – shanusmagnus