【发布时间】:2021-06-01 05:58:53
【问题描述】:
我试图了解对我的 MongoDB 集合(大约 20 万个文档)进行一些基本查询需要多少时间,但我不明白为什么根据 MongoDB 分析器查询需要大约 15 毫秒,而从 Python 查询需要 1 到 2 秒。
为了从 Python 跟踪查询,我做了一些非常基本的事情:
import time
from pymongo import MongoClient
client = MongoClient('')
db = client.my_db
start = time.time()
query = db['my_col'].find({'unix': {'$gte': 'some_timestamp' }})
data = list(query)
end = time.time()
print(end-start)
所以在这里我只是在特定的unix 时间戳之后检索所有文档,然后将查询转换为 Python 列表。这段代码的输出平均从>>1.01 到>>1.80 秒,而根据分析器,查询只需要几毫秒。
我在这里缺少什么?是不是因为真正需要时间的是游标的循环?
【问题讨论】:
-
此代码包括将查询发送到数据库、执行查询、使用所有查询结果对象创建
list、将结果从服务器发送到的网络时间客户端和建立连接的时间。 MongoDB 探查器将仅包括执行查询的时间。此代码测量的内容与分析器测量的内容不同。如果您担心性能,请尝试增加游标批量大小并确保 pymongo 使用 C 扩展。 -
非常感谢@MichaelRuth!很清楚