MySQL 쿼리 캐싱으로 웹 사이트 속도 향상시키기
웹 응용 프로그램의 속도를 높이는 가장 좋은 방법 중 하나는 데이터베이스에서 쿼리 캐싱을 사용하는 것입니다.이 쿼리는 메모리에서 일반적으로 사용되는 SQL 쿼리를 캐시하여 동일한 요청을하는 다음 페이지로 즉시 액세스합니다.
이 방법이 매우 강력한 이유는 웹 애플리케이션을 변경할 필요가 없기 때문에 약간의 메모리를 희생해야하기 때문입니다. 이것은 모든 문제를 해결하지는 않지만 확실히 해칠 수는 없습니다..
참고 : 응용 프로그램에서 테이블을 자주 업데이트하면 쿼리 캐시가 지속적으로 제거되고 이로부터 많은 이점을 얻을 수 없습니다. 이것은 WordPress 블로그와 같이 데이터베이스에 대해 대부분 읽는 응용 프로그램에 이상적입니다. 공유 호스팅에서 실행중인 경우이 기능도 작동하지 않습니다..
실행중인 서버에서 캐싱 사용
가장 먼저 할 일은 MySQL 설치시 실제로 쿼리 캐싱 지원을 사용할 수 있는지 확인하는 것입니다. 대부분의 배포본은 그렇지만 어쨌든 확인해야합니다..
MySQL 콘솔에서이 명령을 실행하면 쿼리 캐싱을 사용할 수 있는지 알 수 있습니다..
mysql> 'have_query_cache'와 같은 변수를 보여줍니다; + ------------------ + ------- + | 변수 이름 | 가치 | + ------------------ + ------- + | have_query_cache | 예 | +------------------+-------+
대부분의 호스팅 공급자가 기본적으로이 기능을 사용하지 않기 때문에 쿼리 캐싱이 실제로 활성화되어 있음을 의미하는 것으로 잘못 입력하지 마십시오. 이상하게도, 내 우분투 Feisty 설치가 이미 그것을 가능하게했다 ...
다음으로 쿼리 캐싱이 활성화되었는지 확인하고 확인해야합니다. 변수를 두 개 이상 확인해야 할 것이므로 변수 쿼리 %를 확인하여 한 번에 모두 수행 할 수 있습니다.
mysql> 'query %'와 같은 변수를 보여줍니다; + ------------------------------ + --------- + | 변수 이름 | 가치 | + ------------------------------ + --------- + | query_alloc_block_size | 8192 | | query_cache_limit | 1048576 | | query_cache_min_res_unit | 4096 | | query_cache_size | 8388608 | | query_cache_type | 켜기 | | query_cache_wlock_invalidate | OFF | | query_prealloc_size | 8192 | +------------------------------+---------+
목록에있는 중요한 항목과 그 의미는 다음과 같습니다.
- query_cache_size - 캐시의 크기 (바이트)입니다. 이 값을 0으로 설정하면 캐싱이 효과적으로 비활성화됩니다..
- query_cache_type - 쿼리 캐싱을 기본적으로 사용하려면이 값을 ON 또는 1로 설정해야합니다..
- query_cache_limit - 캐시 될 최대 크기 쿼리 (바이트 단위)입니다..
query_cache_size 값을 0으로 설정하거나 변경하려는 경우 값이 바이트 단위임을 명심하여 다음 명령을 실행해야합니다. 예를 들어 8MB를 캐시에 할당하려면 1024 * 1024 * 8 = 8388608을 값으로 사용하십시오..
SET GLOBAL query_cache_size = 8388608;
마찬가지로 다른 옵션도 같은 구문으로 설정할 수 있습니다.
SET GLOBAL query_cache_limit = 1048576;글로벌 설정query_cache_type
= 1;
이제 실제로 작동하는지 어떻게 알 수 있습니까? SHOW STATUS 명령을 사용하여 "Qc"로 시작하는 모든 변수를 가져 와서 두포에서 무슨 일이 일어나는지 살펴볼 수 있습니다.
mysql> 'Qc %'와 같은 상태 표시; + ------------------------- + -------- + | 변수 이름 | 가치 | + ------------------------- + -------- + | Qcache_free_blocks | 65 | | Qcache_free_memory | 201440 | | Qcache_hits | 18868 | | Qcache_inserts | 2940 | | Qcache_lowmem_prunes | 665 | | Qcache_not_cached | 246 | | Qcache_queries_in_cache | 492 | | Qcache_total_blocks | 1430 | + ------------------------- + -------- + 8 행 세트 (0.00 초)
당신은 통계에서 내가 충분한 여유 공간을 남겼음을 알게 될 것입니다. 서버에 많은 양질의 프룬이있는 경우이 값을 늘려야 할 수도 있지만 웹 서버의 쿼리 캐싱에 너무 많은 메모리를 사용하지 않아도됩니다. 아파치, PHP, 루비 또는 무엇을 사용하고 있든간에.
구성 파일에서 사용
이러한 변경 사항을 재부팅하거나 mysql 서버를 다시 시작한 후에도 계속 유지하려면 MySQL의 /etc/mysql/my.cnf 구성 파일에 변경 사항을 추가해야합니다. 설치 위치가 다를 수 있습니다..
sudo 또는 루트 모드에서 텍스트 편집기를 사용하여 파일을 연 다음 파일에이 값이없는 경우이 값을 추가하십시오. 그들이 존재한다면, 그것들을 주석 처리하십시오..
query_cache_size = 268435456 query_cache_type = 1 query_cache_limit = 1048576
쿼리 캐싱은 웹 응용 프로그램의 속도를 크게 향상시킬 수 있습니다. 특히 응용 프로그램이 대부분 읽는 경우 특히 그렇습니다. 위의 방법을 사용하여 상태를 모니터링하고 시간 경과에 따라 작동 방식을 확인하십시오..