0

我正在研究 MarkLogic Server 中的单语句事务和多语句事务。除了多语句中显式提交的区别外,还有什么区别。我的意思是在哪些可能的用例中一个比另一个更受欢迎?

到目前为止,对于两个事务 T1 和 T2,我需要在后续事务中得到一个事务的结果,我总是将T1 和 T2 用于 T1 和 T2 xdmp:eval(),并指定<database>"different-transaction"T1 和 T2。

单语句或多语句事务会怎么说?

4

2 回答 2

0

事务最常见的用途是通过一些用户或机器交互进行多次更新。您可以提交每个单独的更新,但为了保持一致性,您有时希望对这些更新进行集体提交/回滚。那是当您需要可以跨越多个请求/语句的事务时。

您正在使用不同的事务,因此评估确实在不同的事务中运行。设置事务模式不会影响这一点,您只需要更加小心提交。实际上,文档 mblakele 中提到的所有示例也都在引用,不要跨越语句。

如果您真的想跨越多个语句/请求,则需要自己创建事务,并传递该 id。您可以为此使用两个未记录的功能:xdmp:transaction-create不带参数transaction-id的 eval 选项和 eval 选项,它采用 transaction-create 返回的 id。

但是请注意,事务中的语句是同步执行的,所以我想您也需要在 eval 中创建事务,只是为了防止调用 eval 的语句阻塞 eval 语句,从而导致死锁..

于 2013-05-06T19:38:33.300 回答
0

这个问题似乎有点开放,但文档有一些讨论:http ://docs.marklogic.com/guide/app-dev/transactions#id_68542

于 2013-05-06T15:15:16.413 回答