【问题标题】:Under what circumstances is a change not written to a MongoDB database when safe mode is off?关闭安全模式时,在什么情况下不会将更改写入 MongoDB 数据库?
【发布时间】:2012-01-03 10:48:38
【问题描述】:

我在我的 MongoDB 数据库中关闭了安全模式,因为所写入的数据都不是绝对 100% 的关键任务,并且插入速度的提高非常重要,但如果所有数据都写入到数据库。

我的理解是,在打开日志并关闭安全模式的情况下,如果服务器在收到写入请求和数据输出到日志之间的 100 毫秒内崩溃,则数据可能会丢失。

如果数据成功写入日志,这是一个相当安全的赌注,即使数据库由于负载过重而滞后,当数据库赶上并能够处理时,数据最终会进入数据库杂志上有什么?还是我对期刊内容的理解有问题?是否还有其他情况下插入的数据可能会丢失?

如果我在另一个进程尝试读取文档前几分之一秒更新了文档,但更改尚未提交到集合中,会发生什么情况?在插入完成之前读取会阻塞吗?

【问题讨论】:

  • 您知道您可以放松 MySQL 中的一致性并实现良好的写入吞吐量(~50k/sec)吗? :-)

标签: mongodb


【解决方案1】:
  • 如果在与写入相同的连接上请求读取,则只有在插入完成之前才会阻止读取。除非使用正确的 getLastError,否则无法保证一旦写入数据,其他连接就会立即看到它。
  • 数据在记录之前被处理并放入数据的内存映射区域。但是,它可能不像日志那样频繁地“同步”到磁盘。这意味着即使负载很高,数据也应该最终更新并变得对其他连接可见。日志数据仅用于在 mongod 实例意外崩溃时恢复持久性。
  • 您的数据可能会因网络中断、磁盘损坏、索引重复等原因而丢失。

【讨论】:

    猜你喜欢
    • 2022-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-08
    相关资源
    最近更新 更多