如何解决提高性能并了解MongoDB游标的IOPS和用法
我正在尝试提高使用MongoDB的代码的效率和速度。该代码使用Python编写,并使用pymongo
模块。
当前,我的代码中有一个部分接收一个可能已从数据库中删除的值的列表,并验证实际删除了哪些值:
verified_removed = []
for value in possibly_removed:
if db.items.find_one({"name" : value}) is None:
verified_removed.append(value)
现在,我知道可以将其更改为类似的内容:
still_exist = list(db.items.find({"name" : {"$in": possibly_removed}))
verified_removed = [val for val in possibly_removed if val not in still_exist]
但是我不确定一件事:
find方法创建一个可以迭代的游标。但是游标是否比为我的每个测试值调用find_one
更有效?还是两种情况下我的IOPS都将保持不变?
游标如何工作?以及每隔约1分钟必须迭代/更新数据库中许多对象的最佳方法是什么?
解决方法
find()
一次抓取一批,因此在大多数情况下,它比多次调用find_one()
更为有效。该文档有更多详细信息,https://docs.mongodb.com/manual/tutorial/iterate-a-cursor/#cursor-batches
如果要提高性能,请考虑在要过滤的字段上添加索引。还要检查bulk operations。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。