Make the MongoDB docs better! We value your opinion. Share your feedback for a chance to win $100.
Click here >
Docs Menu
Docs Home
/ /

クエリ キャッシュ

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

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

Rubyドライバーは、Rack ウェブリクエストとアクティブなジョブ実行のクエリキャッシュを自動的に有効にするミドルウェアを提供します。

注意

クエリキャッシュミドルウェアは、ウェブ リクエストまたはジョブの外部で実行されるコードには適用されません。

Rubyドライバーは、ウェブリクエストごとにクエリキャッシュを有効にする Rack ミドルウェアを提供します。 次のコードは、 Ruby on Railsアプリケーションでクエリ キャッシュ ミドルウェアを有効にする方法を示しています。

config/application.rb
# Add Mongo::QueryCache::Middleware at the bottom of the middleware
# stack or before other middleware that queries MongoDB.
config.middleware.use Mongo::QueryCache::Middleware

Rails アプリケーションで Rack ミドルウェアを使用する方法の詳細については、Rails ドキュメントの ミドルウェア スタックの構成 を参照してください。

Rubyドライバーは アクティブ ジョブ 用のクエリ キャッシュ ミドルウェアを提供します。次のコードに示すように、初期化のすべてのジョブに対してこれを有効にすることができます。

config/initializers/active_ job.rb
# Enable Mongo driver query cache for Active Job
ActiveSupport.on_load(:active_job) do
include Mongo::QueryCache::Middleware::ActiveJob
end

次のコードに示すように、特定のジョブクラスに対して有効にすることもできます。

class MyJob < ActiveJob::Base
include Mongo::QueryCache::Middleware::ActiveJob
end

特定のコード セグメントに対してクエリキャッシュを手動で有効にするには、次のブロック内でコードを実行します。

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

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

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

戻る

クエリからのデータの保持

項目一覧