我想知道是否有人有过删除Marklogic中数百万份文件的经验? 目前我使用简单的xqueries来获取需要删除的文档uri,然后我使用corb批处理整个操作。
一旦我有了Uris列表,有没有更快的方法来删除数百万个文档?
答案 0 :(得分:4)
有几种方法可以解决这个问题。第一个问题是你如何检索文件uri?最好的方法是使用URI词典,以及cts:uris
或cts:uri-match
。其次是你如何执行删除。您可以迭代找到的uri,并为每个调用xdmp:document-delete
,但您可以考虑跳过上述所有内容,并完全恢复为xdmp:collection-delete
。这似乎非常有效。它确实要求您分配一个唯一的集合标签,并且可以完全删除..
HTH!
答案 1 :(得分:3)
调用xdmp:spawn
或xdmp:spawn-function
可能比corb快一点,只是因为它避免了网络往返。
如果文件是按照这种方式组织的,xdmp:collection-delete
或xdmp:directory-delete
也可能更快。但理想情况下,集合或目录应大约为1,000-100,000个文档。
最后,如果你想摆脱一切,清除森林或数据库要快得多。导出你想要保留的东西甚至可能更快(可能使用XQSync),清除数据库,然后重新导入。
答案 2 :(得分:1)
另请注意,如果启用了目录创建,则删除速度会慢得多。 如果你不需要direcgtories(只有WEBDAV真的需要)我建议不使用目录,那么删除会更快。