You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MarkLogic中如何获取集合的总存储大小?

快速估算MarkLogic集合的字节级存储大小

你的现有代码仅返回集合内的文档/片段数量,要获取字节级存储大小,可采用以下几种方法:

快速估算(性能优先,适合大集合)

利用cts:aggregate做求和聚合,搭配xdmp:estimate实现快速估算,无需遍历全量文档:

xquery version "1.0-ml";
let $collection := "/citation/TRWA"
let $total-size-estimate := xdmp:estimate(
  cts:aggregate("sum", xdmp:document-size(cts:search(collection($collection), cts:true-query())))
)
return $total-size-estimate
  • xdmp:document-size:返回单篇文档的原始内容字节数
  • cts:aggregate("sum", ...):对集合内所有文档的大小求和
  • xdmp:estimate:基于索引快速计算聚合结果的估算值,速度远快于全量遍历

精确计算(结果优先,适合小集合)

如果需要完全准确的数值,可遍历集合内每一篇文档并求和,但大集合下性能会明显下降:

xquery version "1.0-ml";
let $collection := "/citation/TRWA"
let $total-size-exact := sum(
  for $doc in cts:search(collection($collection), cts:true-query())
  return xdmp:document-size($doc)
)
return $total-size-exact

补充:估算含索引的实际磁盘存储大小

若需要统计包含MarkLogic索引在内的实际磁盘占用,可通过抽样法估算:

  1. 随机选取集合内一定数量的文档,计算单篇的实际存储大小
  2. 取平均单篇存储值,乘以集合总文档数(即你现有代码返回的数值)
    示例代码(抽样100篇计算平均):
xquery version "1.0-ml";
let $collection := "/citation/TRWA"
let $sample-size := 100
let $sample-docs := cts:search(collection($collection), cts:true-query())[1 to $sample-size]
let $avg-storage-size := avg(xdmp:node-storage-size($sample-docs))
let $total-doc-count := xdmp:estimate(cts:search(collection($collection), cts:true-query()))
let $total-storage-estimate := $avg-storage-size * $total-doc-count
return $total-storage-estimate
  • xdmp:node-storage-size:返回节点(含索引)在磁盘上的实际存储字节数

内容的提问来源于stack exchange,提问作者thichxai

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 05:03:11