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

リクエストごとにMongoDBを複数回クエリしても大丈夫ですか?

    $inについてのQに答えるには....

    次のシナリオでいくつかのパフォーマンステストを行いました:

    コレクション内の最大2400万のドキュメント
    キーに基づいて100万のドキュメントを検索(インデックス付き)
    .NETのCSharpドライバーを使用

    結果:
    一度に1つクエリ、シングルスレッド:109秒
    一度に1つクエリ、マルチスレッド:48秒
    $ inを使用して一度に100Kをクエリ、シングルスレッド=20秒
    クエリ$ in、マルチスレッド=9秒を使用して一度に100K

    したがって、大きな$ inを使用するとパフォーマンスが大幅に向上します(最大クエリサイズに制限されます)。

    更新: $ inがさまざまなチャンクサイズでどのように機能するかについての以下のコメントに続きます(マルチスレッドのクエリ):

    一度に10をクエリする(100000バッチ)=8.8s
    一度に100をクエリする(10000バッチ)=4.32s
    一度に1000をクエリする(1000バッチ)=4.31s
    10000をクエリする一度に(100バッチ)=8.4秒
    一度に100000をクエリ(10バッチ)=9秒(上記の元の結果ごと)

    したがって、$in句にまとめる値の数とラウンドトリップの数のスイートスポットがあるように見えます




    1. MongoDB $ substrBytes

    2. Railsアプリケーション用にAmazonOpsWorksでRedisを実行するにはどうすればよいですか?

    3. PyMongoでコレクションオブジェクトを呼び出せないエラー

    4. MongoDBは削除されたスペースを再利用しますか?