- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在使用 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/
当用户在 uisearchbar 中键入文本时,我正在过滤一个数组,但问题是我有一个警报处理程序,每次调用委托(delegate)时都会触发该处理程序,但我希望警报出现只有一次没有多次......代码
我有一个 HTML5、jQuery 卡片内存游戏,您可以通过一次翻转两张卡片来匹配卡片。我想在两张卡片匹配时播放动画,但因为我已经将 "transform: rotationY(180deg)" 应用
在我的 Jboss-EAP-6.1 中,我部署了一个名为 'myRealWebApp.war' 的 .war我可以使用此网址访问我的应用程序 - http://mywebsite.com/myReal
我是一名优秀的程序员,十分优秀!