gpt4 book ai didi

python - pymongo 单次插入太慢,尽管 WriteConcern(w=0)

转载 作者:太空宇宙 更新时间:2023-11-03 14:31:07 25 4
gpt4 key购买 nike

我正在使用 pymongo 写入我的 mongodb。我想要尽可能快的性能,所以我将写入关注设置为 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)

在上述所有尝试中,collection.insert_one() 花费的时间约为 0.5 秒(!)

为什么插入仍然需要这么长时间?

据我所知,至少应该是那个时间的五分之一左右。更重要的是,“数据”并不是很多数据,而是少数项目。我正在使用 mongodb 3.4 和 pymongo 3.0

最佳答案

首先,您需要回答“多快才足够快”。

“慢”和“快”是非常主观的术语。这取决于很多因素,包括配置的服务器、您使用的语言、您要插入的文档、您在集合中定义的索引数量,一直到您的期望。

对于某些人来说,“慢”是 >100 毫秒。对于其他人来说,“慢”是>10ms。当然,您想要“更快”获得结果,您在服务器配置方面的成本就越高。

另一方面,Python 并不是最快的语言。众所周知,Global Interpreter Lock 的使用存在局限性。 。它也是一种解释性语言,主要是为了可读性而不是纯粹的速度而设计的。使用编译语言(C、C++ 等)通常可以立即提高速度

您可以尝试的另一件事是使用批量插入,而不是尝试使用 insert_one() 插入许多文档。请参阅http://api.mongodb.com/python/current/examples/bulk.html#bulk-insert例如使用批量插入。

关于python - pymongo 单次插入太慢,尽管 WriteConcern(w=0),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47285466/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com