쿼리 캐시
개요
이 가이드 에서는 쿼리 캐싱에 대해 학습 수 있습니다. 쿼리 캐시 이전 찾기 및 집계 쿼리의 결과를 저장하고 나중에 재사용합니다. 이렇게 하면 Mongoid가 쿼리를 다시 수행하는 것을 방지하여 애플리케이션 성능이 향상되고 데이터베이스 부하가 줄어듭니다.
이 기능 에 대해 자세히 학습 Ruby 운전자 설명서에서 쿼리 캐시를 참조하세요.
쿼리 캐싱 활성화
이 섹션에서는 애플리케이션 에서 쿼리 캐싱 기능 활성화 방법에 대해 학습 합니다. 드라이버의 네임스페이스 또는 Mongoid의 네임스페이스 사용하여 쿼리 캐시 활성화 할 수 있습니다.
Automatic
Ruby 운전자 랙 웹 요청 및 활성 작업 작업 실행에 대한 쿼리 캐시 자동으로 활성화 미들웨어를 제공합니다. 쿼리 캐시 자동 활성화에 대한 지침을 보려면 쿼리 캐시 미들웨어 구성 가이드 의 랙 웹 요청에 대한 쿼리 캐시 활성화 섹션을 참조하세요.
참고
쿼리 캐시 미들웨어는 웹 요청 또는 작업 외부에서 실행 코드에는 적용 되지 않습니다.
매뉴얼
특정 코드 세그먼트에 대해 쿼리 캐시 수동으로 활성화 하려면 다음 차단 내에서 코드를 실행 하면 됩니다.
Mongo::QueryCache.cache do # Include code here ... end
쿼리 캐시 명시적으로 활성화 및 비활성화할 수 있지만 앞의 코드 예시 에서는 차단 형식을 사용하는 것이 좋습니다. 다음 코드는 쿼리 캐시 활성화 및 비활성화하는 방법을 보여줍니다.
begin Mongo::QueryCache.enabled = true # Include code here ensure Mongo::QueryCache.enabled = false end
첫 번째 메서드의 결과 캐시
모델 클래스에서 first
메서드를 호출하면 결과를 반환할 때 _id
필드 에서 오름차순 정렬을 사용합니다. 쿼리 캐싱을 활성화 하면 예기치 않은 동작이 발생할 수 있습니다.
예시 들어 first
를 호출하기 전에 모델 클래스에서 all
메서드를 호출하는 경우 first
메서드가 all
의 캐시된 결과를 사용할 것으로 예상할 수 있습니다. 그러나 Mongoid는 두 번째 호출에 정렬을 적용하기 때문에 두 메서드 모두 데이터베이스 쿼리 하고 결과를 별도로 캐시 .
first
메서드를 호출할 때 캐시된 결과를 사용하려면 다음 예시 코드와 같이 모델 클래스에서 all.to_a.first
를 호출합니다.
Band.all.to_a.first
앞의 예시 에서 to_a
메서드를 연결하면 쿼리 실행되고 결과가 메모리의 배열 로 변환됩니다. 그런 다음 first
메서드는 다른 쿼리 트리거하고 결과를 캐싱하는 대신 첫 번째 배열 항목을 반환하기만 하면 됩니다.
추가 정보
필터하다 기준 만들기에 대해 자세히 학습 문서 쿼리 지정 가이드 를 참조하세요.
지속성 대상을 사용자 지정하는 방법을 학습 지속성 구성 가이드 참조하세요.