2014-12-27 123 views
4

我正在努力刪除在MarkLogic數據庫中加載的大量文件。我想要刪除的目錄中的文件數量超過了100,000。我通常使用以下兩種方法刪除查詢控制檯中的文件。目錄中的每個文件都被編入索引。刪除超過100,000個文件的最佳方法是什麼?

for $x in xdmp:directory("/English/","infinity") 
return xdmp:document-delete(fn:document-uri($x)) 

xdmp:directory-delete("/English/") 

當我執行上述任何方法,我得到「時間超限」打破了操作。

我的問題是

  1. 是否有其他更好的方式來刪除一堆文件?
  2. 如果沒有,是否有任何方法可以忽略XDMP-EXTIME或SVC-EXTIME?
+0

什麼是MarkLogic的完整版本? – mblakele 2014-12-29 17:27:46

回答

1

如果您可以清除森林,那通常比刪除大量文檔要快。

否則xdmp:directory-delete通常是更好的技術,但爲了獲得最佳性能確保滿足以下條件:

  1. 數據庫配置有directory-creation=manual
  2. 該數據庫沒有觸發器。
  3. 數據庫沒有鎖片段。

如果滿足這些條件,那麼刪除的瓶頸通常是鎖定的,因此您可能會考慮暫時關閉該瓶頸。

1

您可以在應用程序服務器設置中更改時間限制。

我其實更喜歡產生多個任務來批量刪除。你可以修改你的基本代碼。

最後,請考慮來自Michael Blakeley的taskbot:一種用於爲此目的輕鬆設置衍生任務的解決方案。

相關問題