如何在 MarkLogic 中找到 XML 文档大小

how to find the XML document size in MarkLogic

我正在尝试计算 MarkLogic 中 XML 部分性能的文档大小。有人可以帮我解决任何内置功能或任何可以计算文档准确大小的查询吗?我有一个像这样的公式:

{string-length(string(data($doc))) idiv 2}

如果 'size' 你的意思是 XML 文档 有多大 如果它被序列化为文本 ('to disk'),

 string-length(xdmp:quote( doc('file.xml') )) 

将使用默认编码和序列化选项为您提供 个字符 的数量。
如果使用 UTF8,这将在 1:1(字符到字节)到 1:3 之间变化,具体取决于 Unicode 字符的分布以及指定给 xdmp:quote() 和摄取前(或导出后)的类似格式。 对于拉丁语和默认设置,它通常接近 1:1 -- 为了更准确,您需要指定确切的序列化和编码选项,并将文档保存到文件系统或转换为二进制文件并采用二进制长度。即使那样,它也将取决于文件系统和 OS 依赖(块大小、文本编码等)。

如果'size'你的意思是文档'uses'inside marklogic有多少磁盘/内存可以通过拍摄磁盘快照统计确定space 用于所有数据目录,然后插入大量文档并拍摄另一个快照,然后除以文档数。 它会有所不同,可能会很大,具体取决于许多因素,例如索引设置、文档之间的相似性、合并率和限制等。

文档以高度压缩的形式存储,通常比文本大小小得多,但索引选项会增加总大小...两者在很大程度上取决于 terms/tokens/substrings 不同文档共享的相似程度。

如果 size 你的意思是访问文档时需要多少 memory,那么它就更加可变并且更不容易测量。 对于文本内容很少或没有文本内容的高度结构化文档,它的范围从 0x(完全由索引解析的查询)到 10x 或更多。

我发现计算原始文档大小(在考虑索引之前)的最简单方法是将文档转换为二进制文件,然后我们 xdmp:binary-size().

下面是您如何执行此操作的示例

xdmp:binary-size(xdmp:unquote(xdmp:quote($doc),(),"format-binary")/binary())