2017-05-17 7 views
0

私は小さなアプリを持っており、私はMongoDb(Mongoid)を使用しています。コレクションは比較的小さく(約300レコード)、問合せには長い時間がかかります(約12秒)。ここに私のクエリはです:パフォーマンスのMongoDBクエリをデバッグする方法

query = Lead.order(:post_date.desc).cache 
query = query.page(params['page_number']).cache if params['page_number'] 
query = query.per(params['page_size']).cache if params['page_size'] 
query = query.where(read: params['read']).cache if params['read'] 
query = query.where(important: @user.id.to_s).cache if params['important'] == "true" 
query = query.where(starred: @user.id.to_s).cache if params['starred'] == "true" 

そして、私はモデルのfowlingのインデックスを設定している:

index({ post_date: 1 }, { background: true }) 
index({ read: 1 }, { background: true }) 
index({ important: 1 }, { background: true }) 
index({ starred: 1 }, { background: true }) 

だから私の質問は、1)どのように私はこのクエリのパフォーマンスを向上させることができ、ある2)がありますNewRelicはクエリのパフォーマンスを向上させる方法の詳細を提供していませんが、NewRelicのようなツールやクエリを監視し改善を提案するサービスはありますか?

ありがとうございます!

答えて

1

CloudManagerは、「newRelicのような」パフォーマンス分析を提供する有料のGUIです。

built-in profilerは、デフォルトでは低速のクエリ(> 100ms)を記録しますが、すべてを記録するには注意してオンにすることができます。

.explain()特定のクエリのパフォーマンスを分析します。

Compasは、いくつかのパフォーマンスの洞察を持つ公式のGUIです。

その他の監視ツール:https://docs.mongodb.com/manual/administration/monitoring/

関連する問題