Xquery 如何在MarkLogic中查找XML文档大小

Xquery 如何在MarkLogic中查找XML文档大小,xquery,marklogic,marklogic-8,xquery-3.0,nosql,Xquery,Marklogic,Marklogic 8,Xquery 3.0,Nosql,我试图在MarkLogic中计算XML的文档大小,作为性能的一部分。有没有人能帮我处理一些内置函数或查询,以便我计算文档的准确大小?我有一个公式如下: {string-length(string(data($doc))) idiv 2} 如果“大小”是指如果将XML文档序列化为文本(“到磁盘”),它会有多大 将使用默认编码和序列化选项为您提供字符数。 如果使用UTF8,这将从1:1(字符到字节)到1:3不等,具体取决于Unicode字符的分布以及指定给xdmp:quote()的序列化选项与摄取

我试图在MarkLogic中计算XML的文档大小,作为性能的一部分。有没有人能帮我处理一些内置函数或查询,以便我计算文档的准确大小?我有一个公式如下:

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

如果“大小”是指如果将XML文档序列化为文本(“到磁盘”),它会有多大

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

如果“大小”是指文档在marklogic中“使用”了多少磁盘/内存,可以通过对所有数据目录中使用的磁盘空间进行快照,然后插入大量文档并进行另一次快照,然后除以文档的大小来统计确定。 根据许多因素,例如索引设置、文档之间的相似性、合并率和限制等,它可能会有很大的不同

文档以高度压缩的形式存储,通常比文本大小小得多,但索引选项会增加总大小。。。两者在很大程度上取决于不同文档共享的术语/标记/子字符串的相似性

如果您所说的大小是指一个文档在被访问时所占用的内存量,那么它就更不稳定,也更不容易测量。
对于文本内容很少或没有的高度结构化文档,其范围可以从0x(完全由索引解析的查询)到10x或更大。

如果“大小”是指将XML文档序列化为文本(“到磁盘”)时的大小

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

如果“大小”是指文档在marklogic中“使用”了多少磁盘/内存,可以通过对所有数据目录中使用的磁盘空间进行快照,然后插入大量文档并进行另一次快照,然后除以文档的大小来统计确定。 根据许多因素,例如索引设置、文档之间的相似性、合并率和限制等,它可能会有很大的不同

文档以高度压缩的形式存储,通常比文本大小小得多,但索引选项会增加总大小。。。两者在很大程度上取决于不同文档共享的术语/标记/子字符串的相似性

如果您所说的大小是指一个文档在被访问时所占用的内存量,那么它就更不稳定,也更不容易测量。
对于文本内容很少或没有的高度结构化文档,它的范围可以从0x(完全由索引解析的查询)到10x或更高。

我发现计算原始文档大小(在考虑索引之前)的最简单方法是将文档转换为二进制文件,然后使用us

下面是一个例子,说明你是如何做到这一点的

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

我发现,计算原始文档大小(在考虑索引之前)最简单的方法是将文档转换为二进制文件,然后使用us

下面是一个例子,说明你是如何做到这一点的

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

如何以MB或KB为单位获得相同的值?xdmp:binary size返回一个整数,该整数为字节,所以您只需将其转换为KB或MB即可。所以1KB是1024字节,1MB是1024KB。所以xdmp:binary size(.)div 1024将为您提供KB xdmp:binary size(.)div 1024 div 1024将为您提供MB。如何以MB或KB为单位获得相同的值?xdmp:binary size返回一个整数,即字节,因此您只需将其转换为KB或MB。所以1KB是1024字节,1MB是1024KB。所以xdmp:binary size(.)div 1024将为您提供KB xdmp:binary size(.)div 1024 div 1024将为您提供MB。