2012-01-11 70 views
2

我正在爲應用程序使用mongoDB。此應用程序需要高頻率的讀取,寫入和更新。更新或刪除哪個更快?

我只關心更新和刪除功能。這兩者中哪一個是快速的。我正在索引一個屬性的集合。更新和刪除都符合我的目的,但我不確定哪一個是完美的並有更好的性能。

回答

1

我會建議,而不是決定是否使用更新或刪除您的解決方案,你看看更多的SafeMode屬性。

SafeMode.True表示您期待從服務器接收包含其他內容的響應,以確認命令是成功還是失敗。該選項阻止執行,直到您收到來自服務器的響應。

SafeMode.False不會期待任何迴應,它基本上是一個樂觀的命令。您希望它能夠正常工作,但無法確認。等待響應不會阻止執行,因此,您可以獲得性能,因爲您只需發送請求即可。

現在您需要考慮刪除將釋放服務器上的空間,但您將失去數據的歷史記錄和可追溯性。更新將允許您保留歷史條目,但您需要確保您的查詢不包含「標記爲刪除」條目。

很明顯,您會發現刪除或更新是否更好,但我認爲應該關注您是使用SafeMode true還是false來提高性能。

+0

嗨,在我的情況下,執行時間是ony標準。比較好!這就是我在更新和刪除中感到困惑! – Alex 2012-01-11 06:36:58

+0

我認爲這裏最重要的因素是使用SafeMode來獲得客戶端應用程序的性能,因爲它不會阻止執行。在這種情況下,刪除或更新不一定彼此不同。 – agarcian 2012-01-11 06:53:53

1

一個相當奇怪的問題,但在這裏,你可以基於你的決定的事情:

  • 刪除將保持集合以最佳尺寸。更新(我假設你的意思是將刪除的標誌設置爲true)會導致不斷增長的收集,最終會導致速度變慢。
  • 就地更新(不會導致文檔因大小增加而被移動的更新)始終比需要(重新)移動文檔的更新或刪除更快。
  • 安全=錯誤寫入將顯着提高更新和刪除的吞吐量,代價是無法檢查更新/刪除是否成功。