Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.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期刊的写作关注_Mongodb_Journal - Fatal编程技术网

MongoDb期刊的写作关注

MongoDb期刊的写作关注,mongodb,journal,Mongodb,Journal,我编写了一个测试程序来检查mongodb写性能,无论是否记录日志: 待插入项目:10000 案例1: 插入(w=1,j=1)结果:在340620 ms中插入10000个文档(大约每秒29个文档) 案例2: 使用插入(w=0,j=1)结果:在360ms中插入10000个文档(大约每秒27700个文档) (w=0,j=1)是什么意思 案例2中我们有耐用性吗?如果日志的工作在上一版本中没有改变,我相信您看到的是w=0的速度。因为您有w=0(),所以您只确认命令已发送到MongoDB实例 w=0的行为已

我编写了一个测试程序来检查mongodb写性能,无论是否记录日志: 待插入项目:10000

案例1: 插入
(w=1,j=1)
结果:在340620 ms中插入10000个文档(大约每秒29个文档)

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

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


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

如果日志的工作在上一版本中没有改变,我相信您看到的是
w=0
的速度。因为您有
w=0
(),所以您只确认命令已发送到MongoDB实例

w=0
的行为已从早期版本的MongoDB中确认的套接字更改,该版本无法减轻网络错误


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

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

但是:

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

值得注意的是,“错误被忽略”。如果在更新/插入文档时出现错误,系统不会告诉您,但会忽略有错误的文档,您的持久性应该相对相同

当然,它不如实际执行一个
w=1
,但也不如socket-recogned(旧的
w=0
)那样糟糕,后者可能会丢失大量的写操作


因此,您将获得
w=0
的速度,以很短的时间间隔进行日志记录,就好像它们都是日志确认的一样。

如果代码没有更改,则实际上没有什么意义,只是会使jornal提交其自然时间的三分之一。如果没有写的关注,它将不会等待。它确实耐用吗?日志将提交?那么性能上的差异是什么(大约比w=1慢1000倍)它的持久性就像w=1一样,速度的原因是因为你使用的是w=0,这覆盖了j=1等待时间,只产生了日志在较短时间间隔内提交的效果(这是通常发生的情况)需要注意的是,这确实意味着您没有写入耐久性的通知,但它应该不受您的应用程序和您希望与之交谈的mongod实例之间的网络错误的影响,如文档中所述:因此它不像fire and forget那样糟糕,但它不会等待MongoDB确认或处理操作,我想我得到我的答案,写下你的评论作为答案。“然而,耐久性理论上应该是一样的”事实并非如此。其中,w:1保证数据被写入至少一个节点的数据文件,j:1仅缩短日志写入之间的时间间隔。案例1:aw:1,j:1返回。数据已写入数据文件。案例2:a w:0,j:1返回:数据不一定写入日志,相应服务器的中断仍可能导致数据丢失。@MarkusWMahlberg理论上假设MongoDB本身没有错误w=0如果能够处理网络错误,则不应通过网络丢失数据,这就是我陈述的条件哦,我也错了。在这里太早了。实际上,j:1强制将数据提交到日志,同时缩短提交间隔。尽管仍有可能出现这样的情况,即这些更改不会对数据文件进行更改(副本集中的时间非常“合理”的停机或网络分区),在大多数情况下,当查看单个节点时,j:1在所有实际用途中都等于w:1。@MarkusWMahlberg他们已经删除了关于
j:1
对日志间隔影响的文档,但如果我没记错的话,它会将其降低到正常时间的1/3,即23ms,因此,如果发生错误并进行故障切换,则有一个23毫秒的窗口proceeded@MarkusWMahlberg抱歉,10毫秒,因为默认值已更改为30毫秒