4

我想知道是否有人有删除 Marklogic 中数百万个文档的经验?目前我使用简单的 xqueries 来获取需要删除的文档 uri,然后我使用 corb 批处理整个操作。

一旦我有了 Uris 列表,是否有更快的方法来删除数百万个文档?

4

3 回答 3

4

有几种方法可以解决这个问题。第一个问题是如何检索文档 uri 的?最好的方法是使用 URI 词典和cts:urisor cts:uri-match。其次是你如何执行删除。您可以遍历找到的 uri,并调用xdmp:document-delete每个,但您可能会考虑跳过以上所有内容,并一起恢复xdmp:collection-delete。这似乎非常有效。它确实需要您分配一个唯一的集合标签,并且可以完全删除它。

于 2012-08-20T19:13:36.370 回答
3

调用xdmp:spawnorxdmp:spawn-function可能比 corb 快一点,仅仅是因为它避免了网络往返。

如果文档是为它组织的,xdmp:collection-delete或者xdmp:directory-delete也可以更快。但理想情况下,每个集合或目录应该包含大约 1,000-100,000 个文档。

最后,如果你想摆脱一切,清除森林或数据库会快得多。导出您想要保留的内容(可能使用 XQSync)、清除数据库然后重新导入甚至会更快。

于 2012-08-21T05:10:37.020 回答
1

另请注意,如果您启用了目录创建,则删除速度会慢得多。如果您不需要目录(仅 WEBDAV 真正需要),我建议不要使用目录,那么删除速度会快得多。

于 2012-08-21T14:18:08.200 回答