我正在运行类似的查询 374 次,直到第 367 次性能是合理的,但是返回结果的时间会急剧下降。
我查询的集合存储帖子,其中每个帖子都有一个唯一的 ID,并且数据库中将有同一个帖子的多个版本。任务是获取每个帖子 ID 的最新版本。该方法是获取不同的帖子 ID 列表,然后为每个帖子 ID 获取具有最高 ObjectID 的帖子 ID。
这也可以通过聚合框架来完成,但它会出错exception: aggregation result exceeds maximum document size (16MB)
这是代码:
for oi in obj_ids: #obj_ids is a list of strings containing unique post IDs
t1 = time.time()
o = col.find({'object_id':oi}).sort('_id', -1).limit(1)[0]
t2 = time.time()
该col.find
函数是定时的,下面是这个查询的性能如何随着时间的推移而恶化:
364 of 374 in 0.00369000434875s
365 of 374 in 0.0037579536438s
366 of 374 in 0.00375485420227s
367 of 374 in 0.00367307662964s
368 of 374 in 0.735110998154s
369 of 374 in 3.09494900703s
370 of 374 in 5.16561698914s
371 of 374 in 7.14517307281s
372 of 374 in 8.3472340107s
373 of 374 in 8.61702394485s
374 of 374 in 8.07462406158s
任何想法发生了什么?
更新 2012/11/01
使用 Python cprofile 我发现似乎存在网络瓶颈
编辑:拼写