と/のマングースのドキュメントによると:MongooseJS
MongoDB
Node.js
アプリケーションが起動すると、Mongoose は
ensureIndex
スキーマで定義された各インデックスを自動的に呼び出します。開発には適していますが、インデックスの作成はパフォーマンスに大きな影響を与える可能性があるため、本番環境ではこの動作を無効にすることをお勧めします。autoIndex
スキーマのオプションを false に設定して、動作を無効にします。
これは、Mongoose を最適化するために展開する前に、mongoose から自動インデックス作成を削除するように指示しているように見えますが、アプリケーションの起動時にすべてのインデックスを調べてチャーンするように Mongo に指示することは理にかなっているようです。
本番コードでインデックス作成を処理する適切な方法は何ですか? おそらく、外部スクリプトがインデックスを生成する必要がありますか? またはensureIndex
、単一のアプリケーションがコレクションに対する唯一のリーダー/ライターである場合、DB 書き込みが発生するたびにインデックスを継続するため、不要でしょうか?
編集:補足として、MongoDB はインデックス作成の方法に関する適切なドキュメントを提供していますが、明示的なインデックス作成ディレクティブを実行する必要がある理由や時期については提供していません。インデックスは、既存のインデックスを持つコレクションでライター アプリケーションによって自動的に最新の状態に保つ必要があるように思われます。これは、実際には 1 回限りのことです (新しいインデックスが適用されているときに行われます)。その場合、Mongooseは通常のサーバー再起動では何もしません。ensureIndex
autoIndex