MongoDb 日志写关注

Dis*_*ser 5 journal mongodb

我写了一个测试程序来检查 mongodb 的写性能,有无日志记录:要插入的项目:10000

case1: 插入(w = 1, j = 1)结果:340,620 ms 内插入 10000 个文档(每秒约29 个文档)

情形2: 插入件与(w = 0, j = 1)结果:插入10000个文档360ms(约27700每秒文档)

什么(w = 0, j = 1)意思?

我们在 case2 中有耐久性吗?

Sam*_*aye 4

如果 Journaled 的工作在上一个版本中没有改变,我相信您看到的是w=0. 由于您已经w=0( http://docs.mongodb.org/manual/core/write-concern/#unacknowledged ),您只是确认该命令已发送到 MongoDB 实例。

的行为w=0已从 MongoDB 早期版本中确认的套接字更改,因此无法缓解网络错误。

因此, 的值w=0会覆盖 的值j=1并导致未确认的写入,但是,理论上持久性应该是相同的,因为j=1仍然会导致:

http://docs.mongodb.org/manual/core/write-concern/#journaled

MongoDB 还增加了向日志提交操作的频率。

但:

未确认类似于忽略的错误;但是,驱动程序将在可能的情况下尝试接收和处理网络错误。

值得注意的是“错误被忽略”。如果您在更新/插入它们时遇到错误,您不会被告知,但忽略有错误的文档,您的耐用性应该相对相同。

当然,它不如实际执行 a 那样好w=1,但也没有套接字确认(旧w=0)那么糟糕,后者可能会丢失大量写入。

因此,您可以w=0以较短的时间间隔记录日记,就好像它们都被日记所认可一样。