私はmongodbに書き込むためにpymongoを使用しています。 パフォーマンスをできるだけ速くしたいので、書き込みの問題をw = 0に設定しました。上記のすべての試み、それがcollection.insert_oneにかかった時間(でpymongoのシングルインサートがWriteConcern(w = 0)にもかかわらず遅すぎる
1.
client = MongoClient(host=HOST, port=PORT, w=0)
collection = client[DB][COLLECTION]
collection.insert_one(data)
2.
client = MongoClient(host=HOST, port=PORT)
collection = collection.with_options(write_concern=WriteConcern(w=0))
collection = client[DB][COLLECTION]
collection.insert_one(data)
3.
client = MongoClient(host=HOST, port=PORT)
collection = client[DB][COLLECTION]
collection.insert_one(data, bypass_document_validation=True)
:私は、次の3つの方法を試してみました)〜〜0.5秒(!)
Wまだ長い時間かけて挿入されていますか?
私は、少なくともその時間の約5分の1であるはずであることを理解しています。より多くの場合、 'データ'は多くのデータではなく、わずかなアイテムです。私はmongodb 3.4とpymongo 3.0を使用しています
ありがとうございます。最も懸念していたのは、insert_one()の実行に要した時間が、書込み問題を追加する前後に非常に似ていたことです。適切な影響を与えられなかったのでしょうか?一括挿入に関しては、各アプリケーションの実行時に少量のdbを書きたいので、問題があります。 –
@ KerenMeronの場合、アプリケーションからデータベースにアクセスするための往復時間は、レプリカセットノード間の遅延またはジャーナルへの書き込みに要した時間よりもはるかに長くなります。 MongoDBは分散データベースであり、時間の影響を受けやすいアプリケーションではネットワークの状況を考慮する必要があることを覚えておいてください。 WriteConcernは物事をより速くすることができますが、あなたのネットワークより速くすることはできません。 –