0

我试图了解日记是如何工作的:对吗?

当服务器端没有激活日志时(mongod --nojournal):

  1. (a) 如果客户端请求日志写入,它将输出错误(从 2.6 开始,在它被忽略之前),
  2. (b) 如果客户端请求非日志写入,则不会使用日志,所以我猜会在 RAM 上进行更改,然后操作系统将每 60 秒刷新一次对数据文件的更改。

在 Mongod 上激活日志时(mongod --journal(默认为 64 位版本):

  1. (a) 如果客户端请求日志写,mongoDB只有在将数据提交到日志后才会在主节点确认写,也为了使客户端不花费太多时间来执行写,Mongod会减少提交间隔.
  2. (b) 如果客户端请求非日志写入,mongoDB 将使用日志并从主节点确认写入,而无需等待数据提交到日志。

我实际上在官方文档中没有找到关于案例 2(b) 的任何内容,有人可以确认当客户端 j 为 false 但在 mongod 上激活日志时是否使用日志?

4

1 回答 1

1

你的断言都是正确的。我认为您使用的语言令人困惑,但是可能会让您有些困惑。客户端不请求日志或非日志的写入。如果打开日记功能,无论客户端做什么,都会记录写入。客户端包含的是一个写入问题,它需要一定级别的数据复制(w参数)和/或日志(j参数),然后服务器响应写入成功。非日志写入的意思是j = 0,这意味着服务器将成功响应,而无需等待写入提交到日志;j = 1意味着服务器在写入日志之前不会响应写入。

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

于 2014-08-17T16:23:04.467 回答