2016-09-19 22 views
5

私は、削除したいドキュメントのほとんどが「期限切れ」と呼ばれるコレクションにあるシナリオを持っています。私は、文書を繰り返し処理する長時間実行するプロセスを実行してサーバーを過負荷にしたくないので、文書を削除してバッチサイズで処理するのではなく、1つずつ削除してください。MarkLogicの「xdmp:collection-delete」はどのように機能しますか?

私の質問はどのようにxdmp:collection-deleteが動作するのですか?

文書を繰り返し処理して削除しますか?

または

それはSQLでDROP表のような何かをし、その「瞬間」していますか?

私はxdmp:collection-deleteのバックグラウンドプロセスを知りたいと思います。私は、誰かがこの関数が削除のためにドキュメントをどのように扱うかの流れを描くことができるのだろうかと思います。

+0

テーブルを削除することは、ドキュメントのコレクションを削除することとまったく同じことではないことを忘れないでください。 – grtjn

+0

正確に後ろのものを詳しく説明できますか?基本的には、ドキュメントの繰り返し、ロック、および削除をすべて1回のトランザクションで行うことになります。特定の状況では、いくつかの短所がありますが、以下で説明するようにすべてを行う必要があります。 – grtjn

+0

他のプロセスが実行されているので、サーバーに過負荷をかけることなくデータベースの何百万ものドキュメントを削除しますそれだけでなく、私たちは制限されたCPUとメモリを持っているので、バッチサイズで取り込み、小さな塊でパージする独自のパージを構築しました。私はこの機能が私たちのカスタムパーカーよりも優れたアプローチであるかどうか疑問に思っていました。 –

答えて

8

xdmp:collection-delete()は、1回のトランザクションでコレクション内のすべてのドキュメントを削除します。それは瞬間的ではありませんが、各文書の削除タイムスタンプを設定するだけで済むので、速くなければなりません。

+0

万の文書の場合、速い秒を意味しますか?それは長い間文書のロックを保持しますか? (これは基本的に避けようとしています) –

+1

xdmpの前に出会う基準はいくつかあります:collection-deleteはいわゆるfastモードで実行されますが、fastモードでさえ、削除されているものに対してロックをかけなければなりませんACIDコンプライアンスのため。 – grtjn

+0

私は実際にLIVEサーバーでこれを実行しようとしていますので、xdmp:collection-deleteのバックグラウンドプロセスは何ですか?私は、誰かがこの関数が削除のためにドキュメントをどのように扱うかの流れを描くことができるのだろうかと思います。 –

1

corbを使用してドキュメントを1つずつ削除してみてください。並列処理のためにスレッドを増やすことができます。

関連する問題