1

在 Marklogic 中,如果我通过重新启动数据库来中断长时间运行的查询,那么当数据库再次联机时,该查询将不再完全应用吗?

4

1 回答 1

3

是的,通常取消更新查询将回滚它尝试进行的任何更改。你可以把它想象成一个堆栈:查询中的每个更新都进入一个堆栈,并在它进行时获取任何必要的锁。在计算完所有表达式后,更新进入提交阶段并将该堆栈原子地应用于数据库。如果查询在原子提交之前被中断,则没有任何更改是持久的。此行为涵盖事务 DBMS 实现常见的ACID 属性的 A=atomic 和 D=durable 方面。

有一些例外。可以构建更新,以便将工作应用于细粒度的子事务。一种方法是使用多语句事务。

有关更多信息,请参阅http://docs.marklogic.com/guide/app-dev/transactions

于 2013-06-05T21:28:11.993 回答