【问题标题】:Difference between Single statement transaction and multistatement transaction in real life scenerio for MarklogicMarklogic在现实生活场景中的单语句事务和多语句事务的区别
【发布时间】:2013-05-06 10:06:32
【问题描述】:

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

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

单语句或多语句事务如何解释?

【问题讨论】:

    标签: transactions marklogic


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

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

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

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

      HTH!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-08-18
        • 2010-12-30
        • 2023-03-27
        • 1970-01-01
        • 2021-01-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多