删除MongoDB中的昂贵操作?

And*_*rey 6 performance mongodb

我的部分网站迁移到MongoDB是邮件系统的迁移.我想弄清楚我是否应该实际从集合中删除记录,或者使用某个bool字段将它们标记为删除,当用户想要删除消息时 - 该网站将是高负载所以我关注性能(而不关心磁盘空间).

有任何想法吗?

chx*_*chx 12

tl; dr:删除.

MongoDB将数据存储在双链表中,因此删除结果是调整两个链接,即前一个文档的下一个链接和下一个文档的上一个链接.没有自动压缩.如果已经存储了值,则更新就会发生,更改一个值.现在......你认为,很棒,更新一个int而不是两个指针,肯定更快!不是这样 - 你现在需要索引这个标志并创建索引是"慢".

  • 删除(无论其成本)将是一次性命中,检查"已删除"标志将花费您的每个查询. (3认同)