クエリ キャッシュ
Overview
このガイドでは、 クエリ キャッシュ の詳細について学習できます。クエリキャッシュは、以前の検索および集計クエリの結果を保存し、将来的にはそれらを再利用します。 これにより、Mongoid がクエリを再度実行することがなくなり、アプリケーションのパフォーマンスが向上し、データベースの負荷が軽減されます。
この機能の詳細については、 Rubyドライバーのドキュメントの「 クエリ キャッシュ 」を参照してください。
クエリ キャッシュを有効にする
このセクションでは、アプリケーションでクエリ キャッシュ機能を有効にする方法を学習できます。 ドライバーの名前空間または Mongoid の名前空間を使用して、クエリキャッシュを有効にできます。
Automatic
Rubyドライバーは、Rack ウェブリクエストとアクティブなジョブ実行のクエリキャッシュを自動的に有効にするミドルウェアを提供します。 クエリキャッシュ を自動的に有効にする手順については、 クエリ キャッシュ ミドルウェア構成ガイドの「 Rack Web リクエストのクエリ キャッシュの有効化 」セクションを参照してください。
注意
クエリキャッシュミドルウェアは、ウェブ リクエストまたはジョブの外部で実行されるコードには適用されません。
マニュアル
特定のコード セグメントに対してクエリキャッシュを手動で有効にするには、次のブロック内でコードを実行します。
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 は 2 番目の 呼び出しにソートを適用するため、両方の方法でデータベースがクエリされ、結果が個別にキャッシュ。
first
メソッドを呼び出すときにキャッシュされた結果を使用するには、次の例コードに示すように、モデルクラスで all.to_a.first
を呼び出します。
Band.all.to_a.first
前の例では、to_a
メソッドを連鎖させることでクエリが実行され、その結果がメモリ内の配列に変換されます。 その後、first
メソッドは別のクエリをトリガーして結果をキャッシュする代わりに、最初の配列エントリのみを返します。
詳細情報
フィルター条件の作成の詳細については、「ドキュメントクエリの指定」ガイドを参照してください。
永続性ターゲットをカスタマイズする方法については、「 永続性構成ガイド 」を参照してください。