2012-01-11 72 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)会导致不断增长的收集,最终会导致速度变慢。
  • 就地更新(不会导致文档因大小增加而被移动的更新)始终比需要(重新)移动文档的更新或删除更快。
  • 安全=错误写入将显着提高更新和删除的吞吐量,代价是无法检查更新/删除是否成功。