2

Mongo 2.2 と Rails 3.2.12 で Rails アプリを構築しました。私たちは Mongo を初めて使用するので、1000 ミリ秒以上かかる非常に遅いクエリを最適化する方法についてのヒントをいただければ幸いです。

Mongo へのインターフェースとして MongoMapper を使用しています。

これらのテーブルにインデックスを付けていますが、クエリがこれらのインデックスを適切に使用しているかどうかを確認する方法はありますか? 速度低下の原因を特定するには、他にどのような方法がありますか?

これは、1 日分の遅い Mongo クエリです: https://gist.github.com/panabee/2876e833002f3151eeda

これらのクエリのうちの 3 つについて説明します: https://gist.github.com/panabee/358bd87ba7b954018dab

4

1 に答える 1

0

あなたの問題は、スキーマの設計、インデックス作成の設計、そしておそらく現在の負荷を処理するためのリソースが不十分であることです (おそらく、最初にクエリを修正しないとわかりません)。

スキーマを設計するときは、読み取りと書き込みのためにデータにアクセスする方法を考慮する必要があります。ドキュメントの構造とインデックス作成戦略は、読み取りと書き込みのニーズを反映する必要があります。現在、非常に少数のドキュメントを選択するために数千のドキュメントをスキャンする必要があるクエリがあります。これは、不適切なインデックス作成戦略を反映しています。効果的なインデックス作成により、クエリはインデックスを使用して必要なドキュメントの数をゼロにできるはずです。さらに、ソートを実行する必要がある場合は、それらもインデックスでサポートする必要があります。

問題は、単一のインデックスが欠落している、または間違ったタイプのクエリを使用しているということではないため、これは回答の適切な場所ではありません。アプリケーションのニーズに基づいて、スキーマ設計とインデックス作成戦略を再検討する必要があります。

于 2013-05-24T03:33:27.633 に答える