删除超过100,000个文件的最佳方法是什么?

时间:2014-12-27 19:01:13

标签: marklogic

我正在努力删除MarkLogic数据库中加载的大量文件。我要删除的目录中的文件数超过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?

2 个答案:

答案 0 :(得分:1)

您可以在应用服务器设置中更改时间限制。

我实际上更喜欢将多个任务生成为批量删除。您可以为此修改基本代码。

最后,请考虑Michael Blakeley的taskbot:为此目的轻松设置衍生任务的解决方案。

答案 1 :(得分:1)

如果你可以清除森林,那通常比删除大量文件更快。

否则xdmp:directory-delete通常是更好的技术,但为了获得最佳性能,请确保满足以下条件:

  1. 数据库配置有directory-creation=manual
  2. 数据库没有触发器。
  3. 数据库没有锁定片段。
  4. 如果满足这些条件,那么删除的瓶颈通常是锁定的,因此您可以考虑暂时关闭它。