写关注中的 MongoDb 日志

标签 mongodb journal

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

案例 1: 使用 (w = 1, j = 1) 插入结果:在 340,620 毫秒 中插入 10000 个文档(大约每秒 29 个文档)

案例2: 使用 (w = 0, j = 1) 插入结果:在 360ms 中插入 10000 个文档(大约每秒 27700 个文档)

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

我们在案例 2 中有耐用性吗?

最佳答案

假设日志的工作在上一个版本中没有改变,我相信您看到的是 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 also increases the frequency that it commits operations to the journal.

但是:

Unacknowledged is similar to errors ignored; however, drivers will attempt to receive and handle network errors when possible.

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

当然,它不如实际执行 w=1 好,但也没有 socket acknowledged (old w=0) 差,后者可能会丢失大量写入。

因此,您获得了 w=0 的速度,并且在很短的时间间隔内进行记录,就好像它们都是被记录在日记中一样。

关于写关注中的 MongoDb 日志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26924221/

相关文章:

json - node.js noobie 试图遵循教程 - 需要将 Jade 引用更改为哈巴狗

mongodb - 从终端上传数据到 MongoLab 数据库

linux - 为什么在 Linux 上出现错误 mongod dead 但 subsys 被锁定和日志文件可用空间不足?

php - OpenCart 3 + Journal 3,从访客结账中删除电子邮件字段?

logging - 我应该如何使用 systemd 处理远程日志记录?

logging - 使用不带日志的 systemd

Latex 类文件杂志

javascript - Mongoose 内部的 `_doc` 是什么(console.log 显示使用它和不使用它的结果相同)

c# - Mongo DB中的Upserting和Id问题

javascript - 为 ISO 包装器制作日期