Docs Menu

クエリ キャッシュ

このガイドでは、 クエリ キャッシュ の詳細について学習できます。クエリキャッシュは、以前の検索および集計クエリの結果を保存し、将来的にはそれらを再利用します。 これにより、Mongoid がクエリを再度実行することがなくなり、アプリケーションのパフォーマンスが向上し、データベースの負荷が軽減されます。

この機能の詳細については、 Rubyドライバーのドキュメントの「 クエリ キャッシュ 」を参照してください。

このセクションでは、アプリケーションでクエリ キャッシュ機能を有効にする方法を学習できます。 ドライバーの名前空間または Mongoid の名前空間を使用して、クエリキャッシュを有効にできます。

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 メソッドは別のクエリをトリガーして結果をキャッシュする代わりに、最初の配列エントリのみを返します。

フィルター条件の作成の詳細については、「ドキュメントクエリの指定」ガイドを参照してください。

永続性ターゲットをカスタマイズする方法については、「 永続性構成ガイド 」を参照してください。