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

シンプルだが大きなデータベースの小さなコレクションに対するmongoDBクエリが途方もなく遅い

    avgObjSize 280バイトの見積もりと一致していません。オブジェクトの平均は約5MBでstorageSize 1GB近くです。メモリに制約がある場合、1 GBのファイルすべてにアクセスする必要があるクエリを実行すると、多くのページフォールトが発生します。

    コンパクト を試しましたか ?

    db.runCommand({compact: 'Aggregates'})
    

    または修復 ?

    db.repairDatabase()
    

    それでもうまくいかない場合は、ドキュメント全体をプルするのではなく、合計に必要なフィールドだけをプルバックしてみてください。これらのドキュメントは実際には5MBであり、データをネットワーク経由でプルするのに時間がかかる可能性があります。

    def get_total():
        start = datetime.now()
        print sum([x['daily_total_pages'] for x in c.Aggregates.find({}, {"daily_total_pages": 1})])
        end = datetime.now()
        print (end-start).seconds
    



    1. PHPMongoDBは$matchと$groupと$addToSetを集約します

    2. MongoDB\uXXXXの問題

    3. MongoDB-コレクションに_idの一意のインデックスがありません

    4. シェルスクリプトを介してmongoコマンドを実行する方法は? (私のものは動作しません)