1

Marklogic で、長時間実行されているクエリをデータベースの再起動で中断すると、データベースが再びオンラインになったときに、そのクエリは完全に適用されなくなりますか?

4

1 に答える 1

3

はい、通常、更新クエリをキャンセルすると、実行しようとした変更がロールバックされます。これはスタックのように考えることができます。クエリのすべての更新はスタックに入り、必要なロックを取得します。すべての式が評価された後、更新はコミット フェーズに入り、そのスタックをアトミックにデータベースに適用します。そのアトミック コミットの前にクエリが中断された場合、どの変更も永続的ではありません。この動作は、トランザクション DBMS 実装に共通するACID プロパティの A=atomic および D=durable の側面をカバーしています。

いくつかの例外があります。細かいサブトランザクションで作業が適用されるように更新を構成することができます。これを行う 1 つの方法は、複数ステートメントのトランザクションを使用することです。

詳細については、 http://docs.marklogic.com/guide/app-dev/transactionsを参照してください。

于 2013-06-05T21:28:11.993 に答える