什麼是放棄MongoDB收集與刪除其所有文檔(假設收集將立即重新創建)的權衡?MongoDB:放棄收集與移除所有文檔的權衡
18
A
回答
19
如果您通過從集合中刪除所有文檔,那麼您將執行更多工作(釋放文檔的存儲,清除指向文檔的索引條目等)。如果您只是刪除集合,它只會回收集合及其索引所使用的範圍。
另一個區別是,刪除集合也會刪除集合的索引。
20
簡單地刪除集合的好處是它比刪除集合的所有文檔快得多。如果您的收藏集將被「立即重新創建」(假設包括索引重新創建),那麼這可能是最有吸引力的選擇。本書MongoDB: The Definitive Guide的
作者(克里斯蒂娜·喬多羅和邁克爾·迪羅爾夫)跑了,他們提供了一個定時與一個記錄的Python腳本實驗。 drop
的結果爲0.01秒,remove
的結果爲46.08秒。現在,雖然確切的時間可能會因硬件和其他因素而有所不同,但它說明drop
顯着更快。
參考: Chodorow K.,Dirolf M.(2010)。 「MongoDB:權威指南」O'Reilly Media,Inc. Sebastapol,CA.,第25頁
1
刪除和刪除集合主要是實現細節。
刪除收集需要一個由內部狀態的一次更新中發生的集合中存在。
刪除收集需要騰出數據文件的數據庫裏面的一些大型數據結構。
刪除集合比逐個刪除直到集合爲空時快得多。
元數據像索引將存在,如果集合被刪除,而不是當其丟棄。
來源:MongDB大學課程
相關問題
- 1. 放棄流/文件的所有權
- 2. MongoDB:集合中的所有文檔
- 3. 如何刪除java中的mongodb集合中的所有文檔
- 4. 放棄會議沒有清除所有
- 5. MongoDb - 如何收集已收集到的其他收藏集的文檔?
- 6. dropCollection是不會放棄的收集
- 7. 刪除除mongodb文檔以外的所有字段
- 8. MongoDB的:返回所有的子文檔
- 9. 更新MongoDB集合中所有文檔中的元素
- 10. Mongodb node.js集合中所有文檔的鍵值總和
- 11. Mongodb:克隆集合中的所有文檔
- 12. MongoDB計算性能權衡
- 13. 沒有收集文本索引的MongoDB
- 14. 合併子文檔主文檔與MongoDB的聚集
- 15. 如何使用文檔ID從mongoDB集合中刪除文檔?
- 16. 放棄根特權?
- 17. Matlab通過Java驅動程序從MongoDB集合中刪除所有文檔
- 18. mongodb收集來自不同收藏的所有記錄
- 19. Pyspark放棄所有連接
- 20. 無法刪除MongoDb文檔與Php
- 21. MongoDB:刪除名稱與字符串匹配的所有集合
- 22. 使用地圖縮小統計收集中的所有文檔?
- 23. Ravendb檢索收集中的所有文檔以進行報告
- 24. 獲取不符合標準的所有收集文檔
- 25. 公司的FireStore:從收集查詢所有文檔
- 26. 放棄代碼並完成對某人的所有權
- 27. 獲取與MongoDB中的值相關的所有文檔
- 28. mongodb,將所有文檔複製到集合
- 29. MongoDB中找到的所有記錄與子文檔ID等於
- 30. 如何從mongodb獲取所有文檔?
+1的答案,但有一點需要注意的丟棄VS刪除,那就是當你在分片環境中,也出現了一些錯誤對涉及重複使用的各個版本刪除集合名稱(甚至在某些情況下甚至是前綴)。我所知道的最新相關錯誤是:https://jira.mongodb.org/browse/SERVER-4262,並在2.2中修復 - 如果您計劃大量丟棄/重新創建,只需要注意一點。 –
感謝您的提示,@AdamC!我想這種情況在混合中的分片/複製中確實有點棘手。我在家裏的實驗室裏有一個主/從複製配置,我不得不嘗試一下。 – Aaron