在Marklogic中,如果我在数据库重启时中断长时间运行的查询,那么当数据库再次联机时,该查询是否会再次完全应用?
答案 0 :(得分:3)
是的,通常取消更新查询将回滚它尝试进行的任何更改。您可以将其视为堆栈:查询中的每个更新都会进入堆栈,并随着任何必要的锁定进行。在评估了所有表达式之后,更新进入提交阶段并以原子方式将该堆栈应用于数据库。如果查询在该原子提交之前被中断,则所有更改都不是持久的。此行为涵盖事务DBMS实现常见的ACID properties的A = atomic和D =持久方面。
有一些例外。可以构建更新,以便在粒度子事务中应用工作。一种方法是使用多语句事务。
有关详情,请参阅http://docs.marklogic.com/guide/app-dev/transactions。