marklogic-9 - MarkLogic - 数据库大小单位
问题描述
我正在使用以下查询来返回 MarkLogic 服务器中每个数据库的大小。查询正在返回数据,但不确定查询返回的单位(KB/MB/GB 等)。我试图手动找到每个集合的大致大小以进行累加,但不知何故数字不匹配。MarkLogic 是否默认对文档应用压缩?
xquery version "1.0-ml";
declare namespace forest = "http://marklogic.com/xdmp/status/forest";
for $db-id in xdmp:databases()
let $db-name := xdmp:database-name($db-id)
let $db-size :=
fn:sum(
for $f-id in xdmp:database-forests($db-id)
let $f-status := xdmp:forest-status($f-id)
let $space := $f-status/forest:device-space
let $f-name := $f-status/forest:forest-name
let $f-size :=
fn:sum(
for $stand in $f-status/forest:stands/forest:stand
let $stand-size := $stand/forest:disk-size/fn:data(.)
return $stand-size
)
return $f-size
)
order by $db-size descending
return $db-name || " = " || $db-size
解决方案
Cluster Status 页面上的 Admin UI 中显示的单位度量始终为 MB,其中显示的数字与您的代码返回的数字相匹配。
MarkLogic 并没有真正应用压缩,但它确实有复杂的逻辑来获取数据,并为每个文档分开结构信息。当您在文档中有重复时会有一些好处。重复次数越多,也包括元素名称,差异就越大。
HTH!