MongoDB CRUD 概念 > 原子性和事务处理


  • Lv 1

    原子性和事务处理

    在MongoDB中,一个写操作的原子性是基于单个文档的,即使写操作是在单个文档内部更改多个嵌套文档。

    当一个写操作修改了多个文档,每个文档的更新是具有原子性的,但是整个操作作为一个整体是不具有原子性的,并且与其他操作可能会有所交替。然而,您可以使用$isolated操作将多个文档单的写操作 隔离成单个的写操作.

    1.$isolated 操作

    使用$isolated操作指令,让一个影响多个文档的写入操作在开始写入第一个文档之后就不会被其他的程序插入。这能确保在写操作完成或失败前不会有客户端可以查看到任何变更。

    $isolated操作在sharded clusters 中不起作用。

    这个隔离的写操作不提供”所有或者全部没有”的原子性。这就是说在写的过程中如果有错误产生不会将所有的在错误产生之前的更新全部回滚。

    • 注解:
      $isolated操作将使写操作在集合上获得一个排他锁(exclusive lock),甚至对于文档级别的锁存储引擎比如WiredTiger也是这样处理的。这也就是说在执行$isolated操作运行期间会导致WiredTiger单线程运行。

    $isolated操作在分片集群中不起作用。

    使用$isolated更新操作的例子请参看

    本帖下載内容已隐藏,请登入以查看隐藏内容!


登录后回复
 

与 萌阔论坛 的连接断开,我们正在尝试重连,请耐心等待