MongoDB日记:当客户端请求非日志写入并在Mongod上激活日记时,是否使用日志文件

时间:2014-08-16 22:26:28

标签: mongodb journaling

我试图理解日记是如何正常工作的:这是正确的吗?

如果服务器端没有激活日记功能(mongod --nojournal):

  1. (a)如果客户请求记录,它将输出错误(从2.6开始,在被忽略之前),
  2. (b)如果客户端请求非日记本写入,则不会使用日记功能,因此我猜测将在RAM上进行更改,然后操作系统将刷新对数据文件evry 60s的更改。
  3. 在Mongod上激活日记功能时(mongod --journal(默认为64位版本):

    1. (a)如果客户端请求记录写入,mongoDB只有在将数据提交到日志之后才会确认在主节点中写入,也是为了使客户端不要花费太多时间来执行写入,Mongod会减少提交间隔。
    2. (b)如果客户端请求非日志写入,mongoDB将使用日志并确认从主节点写入,而无需等待数据提交到日志。
    3. 我实际上在官方文档中没有找到关于案例2(b)的任何内容,有人确认当j在客户端是假的时候是否使用了日志但是在mongod上激活了日志?

1 个答案:

答案 0 :(得分:1)

你的断言都是正确的。我认为你使用的语言令人困惑,但可能会让你感到困惑。客户不要求记录或非记录的写入。如果启用了日记功能,则无论客户端执行什么操作,都会记录写入操作。客户端包含的是write concern,在服务器响应写入为a之前,需要一定级别的数据复制(w参数)和/或日志(j参数)。成功。非日记写的意思是j = 0,这意味着服务器将成功响应而不等待写入提交给日志; j = 1表示服务器在将其提交到日志之前不会响应写入。

w参数控制成功响应所需的数据复制级别。上面的链接中有更多详细信息。