Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MongoDB日志:当客户端请求非日志写入并且在Mongod上激活日志记录时,是否使用日志文件_Mongodb_Journaling - Fatal编程技术网

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

MongoDB日志:当客户端请求非日志写入并且在Mongod上激活日志记录时,是否使用日志文件,mongodb,journaling,Mongodb,Journaling,我试着去理解日记到底是如何工作的:对吗 当服务器端没有激活日志记录时(mongod--nojournal): (a) 如果客户端请求日志写入,它将输出一个错误(从2.6开始,在被忽略之前) (b) 如果客户端请求一个非日志写入,日志将不会被使用,所以我猜更改将在RAM上进行,然后操作系统将刷新对数据文件evry 60s的更改 在Mongod上激活日志记录时(Mongod--journal(默认为64位版本): (a) 如果客户端请求日志写入,mongoDB只有在将数据提交到日志后才会确认主节点中

我试着去理解日记到底是如何工作的:对吗

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

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

  • (a) 如果客户端请求日志写入,mongoDB只有在将数据提交到日志后才会确认主节点中的写入,同时为了使客户端不会花费太多时间执行写入,Mongod会缩短提交间隔
  • (b) 如果客户端请求非日志写入,mongoDB将使用日志并确认来自主节点的写入,而无需等待数据提交到日志

  • 事实上,我在官方文件中没有找到关于案例2(b)的任何信息,有人能确认当客户端的j为false但mongod上激活了日志记录时是否使用了日志记录吗?

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

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