sql >> データベース >  >> NoSQL >> MongoDB

MongoDB:コレクション内の数百万のレコードに対するcount()コマンドの実行時間を見つけますか?

    MongoDBには、次の方法で有効にできる組み込みのプロフィラーがあります。

    db.setProfilingLevel(2)
    

    「2」の代わりに、以下のリストから任意のオプションを選択できます。

    • 0 -プロファイラーはオフで、データを収集しません。 mongodは、常にslowOpThresholdMsしきい値よりも長い操作をログに書き込みます。
    • 1 -低速操作の場合にのみプロファイリングデータを収集します。デフォルトでは、低速操作は100ミリ秒より低速です。slowOpThresholdMsランタイムオプションまたはsetParameterコマンドを使用して、「低速」操作のしきい値を変更できます。詳細については、「低速操作のしきい値の指定」セクションを参照してください。
    • 2 -すべてのデータベース操作のプロファイリングデータを収集します。

    また、 system.profile を確認すると、クエリの結果を確認できます。 MongoDBのコレクション..

    編集:

    パフォーマンスをテストする場合は、mongoコンソールから実行できる次のコードスニペットを使用できます。

    > for (var i = 0; i < 10000000; ++i) { db.countTest.insert({a: i % 10}) }
    > db.countTest.ensureIndex({a:1})
    > db.countTest.count({a: 1})
    > db.countTest.count()
    > db.countTest.find().count()
    

    そして、私の結論は次のとおりです。

    1. インデックスの追加 (IDからのアパート)1,000万レコードのカウントを返しました 約170ms
    2. IDでカウント (クエリなしのカウント)ミリ秒未満でカウントを返しました
    3. カーソルを使用したIDによるカウント (.find()はコレクション上のカーソルとして機能することに注意してください)ミリ秒未満でカウントを返しました

    したがって、より多くのインデックス コレクションのクエリが遅くなる _idでカウントすると、すぐに複合インデックスがある場合 インデックスの数に基づいてスケーリングします



    1. mongodbの他のドキュメントの値に依存するドキュメントをクエリする

    2. クライアントとサーバーMeteor間の共有コレクション

    3. 例外:BSONタイプEOOから日付に変換できません

    4. mongo.lockファイルの用途は何ですか?