开发者社区 问答 正文

控制写操作的持久性级别 —— WriteConcern是怎样的

控制写操作的持久性级别 —— WriteConcern是怎样的

展开
收起
不变的狗子 2021-09-28 14:12:29 1008 分享 版权
1 条回答
写回答
取消 提交回答
  • 热爱技术

    image.png

    上图为 WriteConcern 标准的配置格式,包括三个子参 数: ·w: 决定了写操作返回前需要等待多少个副本集节点的 确认。 · j: 决定写操作产生的日志是否已经落盘。 ·wtimeout:决定了写操作等待的超时时间,避免客户 端一直阻塞。 下面具体演示几个 WriteConcern 配置的值。

    image.png

    如上图,当 W:1 时,写操作在本地执行完成后,直接向 客户端返回成功,无需等待日志(Journal)刷盘。

    image.png

    如上图,当 W:1,J:true 时,区别于 W:1 的主要特点在 于写操作在本地执行完成后,需要等待日志(Journal) 刷盘,会增加额外延迟。

    image.png

    如上图,当 W: "Majority",当下发了这个写操作之 后,除了需要在 Primary 节点 Apply 完成,还需要 复制到其中一个 Secondary 节点去 Apply 完成,才能 向 Driver 反馈写操作成功。 在三节点副本集情况下,"Majority"相当于两个节 点,等同于 W:2。

    资源来源:电子书《玩转MongoDB从入门到实战》,下载链接:https://developer.aliyun.com/topic/download?id=1060

    2021-09-28 14:14:07
    赞同 展开评论
问答地址: