MySQL 캐시는 MyISAM 스토리지 엔진을 사용하는지 InnoDB 스토리지 엔진을 사용하는지에 따라 다르게 작동합니다.
MyISAM은 인덱스가 아닌 데이터 만 캐시합니다. LOAD INDEX INTO CACHE
을 사용하여 MyISAM 색인을 키 버퍼 캐시에 미리로드 할 수 있습니다. 그러나 InnoDB를 사용한다면 동등한 진술은 없다.
InnoDB는 데이터 페이지와 색인 페이지를 모두 캐시합니다. 캐시 버퍼를 예열하는 특별한 명령은 없지만 전체 테이블 스캔과 전체 인덱스 스캔을 수행하여 버퍼에로드하는 몇 가지 SQL 문을 실행할 수 있습니다. wget
에 의지하지 않고 서버의 스크립트를 사용하여이 작업을 수행 할 수 있어야합니다!
@code_burgar의 대답에 동의합니다. 150KB 행은 캐시가 예열되는 동안 많은 성능 저하를 느끼지 않도록 충분히 작습니다.
Query Cache의 워밍업에 대해 이야기하는 경우 다른 문제입니다. 특정 SQL 쿼리를 사용하여 쿼리 캐시를 워밍업해야합니다. 캐시는 해당 SQL 쿼리와 연결된 결과 집합을 축 어적으로 유지하기 때문입니다. 귀하의 wget
솔루션은 비효율적이며 많은 작업을 중복시킬 수 있습니다. 번 번 캐시하려는 각 쿼리를 실행하는 서버에서 스크립트를 실행하여 쿼리 캐시를 준비 할 수 있어야합니다.
그러나 이러한 쿼리가 무엇인지 파악하고 코드가 변경된 경우 주기적으로 캐시 미리로드 스크립트를 업데이트하려면 코드 검토가 필요할 수 있습니다.
고맙습니다. MyISAM입니다. 그래서 아침에 LOAD INDEX INTO CACHE 명령을 시도해보고 트릭을 수행하는지 확인해 보겠습니다. 쿼리 캐시의 경우 각 테이블에서 모두 선택하는 것처럼 간단할까요? – hamstar
쿼리 캐시는 특정 쿼리에 대한 결과 집합을 캐시합니다. 따라서 각 테이블에서 모든 항목을 선택하는 것은 도움이되지 않습니다 (앱에서 사용하는 쿼리가 아닌 한 의심 스럽습니다). –
그것은 그것 (지금 그것으로서의 빠른)을했다 :) 감사합니다! – hamstar