2014-12-27 122 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:一种用于为此目的轻松设置衍生任务的解决方案。

相关问题