Mongo find() 到 return 某些文档的所有文档都很慢
Mongo find() to return all documents is slow for certain documents
我在使用 PyMongo 遍历特定集合中的所有文档时遇到问题。该循环需要扫描大约 450k 个文档,几乎所有文档都几乎是即时的,除了少数几个,其中一次迭代需要 10-90 秒。
for testscriptexec in testscriptexecs.find({}, {"tsExecId": 1,"involvedOrgs": 1, "qualifiedName": 1, "endTime": 1, "status": 1}):
我想弄清楚是什么导致某些文档上的 Cursor 变慢。我确定长时间延迟总是发生在相同的文档上。
我比较了慢速文档的 JSON 导出和快速文档的导出,我没有看到任何应该减慢 _id 索引搜索的东西。文件不是特别大,我实际拉的字段大小完全一样。
该集合在 _id 上有一个索引,以及一些与此代码无关的其他索引。
哪些因素可能导致此查询在按 ID 查找的某些迭代中挂起?
这些问题总是有点主观,但一个想法是 MongoDB returns 批量数据,这样可以解释您所看到的。
您可以通过调整 find()
https://pymongo.readthedocs.io/en/stable/api/pymongo/cursor.html#pymongo.cursor.Cursor.batch_size
上的 batch_size 参数来排除或排除此问题
我在使用 PyMongo 遍历特定集合中的所有文档时遇到问题。该循环需要扫描大约 450k 个文档,几乎所有文档都几乎是即时的,除了少数几个,其中一次迭代需要 10-90 秒。
for testscriptexec in testscriptexecs.find({}, {"tsExecId": 1,"involvedOrgs": 1, "qualifiedName": 1, "endTime": 1, "status": 1}):
我想弄清楚是什么导致某些文档上的 Cursor 变慢。我确定长时间延迟总是发生在相同的文档上。
我比较了慢速文档的 JSON 导出和快速文档的导出,我没有看到任何应该减慢 _id 索引搜索的东西。文件不是特别大,我实际拉的字段大小完全一样。
该集合在 _id 上有一个索引,以及一些与此代码无关的其他索引。
哪些因素可能导致此查询在按 ID 查找的某些迭代中挂起?
这些问题总是有点主观,但一个想法是 MongoDB returns 批量数据,这样可以解释您所看到的。
您可以通过调整 find()
https://pymongo.readthedocs.io/en/stable/api/pymongo/cursor.html#pymongo.cursor.Cursor.batch_size