WriteConcern.已确认与新WriteConcern{日志= true, W = 1}

本文关键字:WriteConcern true 日志 确认 | 更新日期: 2023-09-27 18:12:46

我对mongodb c#驱动程序中的WriteConcern设置有点困惑。

WriteConcern。已承认意味着日志=true和FSYNCED =true?

如果我只是想确保它写primary,是writeconconcern。承认足够了吗?

WriteConcern.已确认与新WriteConcern{日志= true, W = 1}

WriteConcern = Acknowledged仅表示主服务器已经收到写操作。不能保证在写调用返回之前将数据写入磁盘。如果要确保将数据写入主节点上的磁盘,则需要journal=truefsync=true,这可以在连接字符串中完成。

我不是c#程序员,但是从语义上讲,我要说-不,它不是。

Journal和Fysncing写入与在某个mongod中承认它的存在非常不同,老实说,同时设置这两个是没有意义的,因为您实际上是在等待它写入磁盘两次:/

你最好直接用Journal;如果你需要写日记的话。同样,日志写与已确认的写是不同的,日志写在返回响应之前给人一种磁盘上的持久性,然而,已确认的写只需要被接收以便返回,而不是写入磁盘。

所以,不,WriteConcern.Acknowledged和你以前的Journal= true and FSYNCED =true设置不一样,但是我想说这已经足够了,你可能在这些设置上做得太过分了。

编辑

我注意到你的标题中有设置W = 1。这不是Fsync,而是acknowledged。因此,要获得与以前相同的写操作,您需要做的就是实际添加一个日志选项到您的写关注点以及WriteConcern.Acknowledged,这应该会给您提供与以前相同的写关注点。