MongoDB:删除集合与删除所有文档的权衡

Mat*_*rne 22 mongodb

删除MongoDB集合与删除所有文档(假设将立即重新创建集合)的权衡取舍是什么?

Aar*_*ron 26

简单地删除集合的好处是它比删除集合的所有文档要快得多.如果您的集合无论如何都会"立即重新创建"(假设包含索引重新创建),那么这可能是最具吸引力的选项.

这本书的作者的MongoDB权威指南(克里斯蒂娜·乔多罗和迈克尔·迪罗尔夫)跑了,他们提供了一个定时的Python脚本的实验drop与一个remove100万分的记录.结果是0.01秒drop和46.08秒remove.现在虽然确切的时间可能会因硬件和其他因素而有所不同,但它仍然说明了这一点drop明显更快.

参考文献:Chodorow K.,Dirolf M.(2010)."MongoDB:The Definitive Guide."O'Reilly Media,Inc.Sebastapol,CA.,pp​​.25

  • 答案上有+1,但有一点需要删除vs删除,这就是当你处于分片环境时,各种版本上有几个错误与重用已删除的集合名称(在某些情况下甚至是前缀)有关.我所知道的最新相关错误是这个:https://jira.mongodb.org/browse/SERVER-4262并且修复了2.2 - 如果您计划大量的丢弃/重新创建,只需注意一些事项. (6认同)

Lou*_*isa 22

如果您从集合中删除所有文档,那么您将完成更多工作(释放文档的存储空间,清除指向文档的索引条目,等等).如果您只是删除集合,它只是回收集合及其索引使用的范围.

另一个区别是删除集合也会删除集合的索引.