MarkLogic-如何知道数据库大小,索引大小,总索引

时间:2019-07-16 07:39:37

标签: database indexing size marklogic

我们正在使用MarkLogic 9.0.8.2

我们已经设置了MarkLogic集群,吸收了约18M个XML文档,创建的索引很少,例如Fields,PathRange等。

现在在使用配置,索引,相同记录数设置另一个环境时,但是我不明白为什么数据库状态页上的总大小与以前的环境不同。

因此,我开始比较两个集群的数据库状态页面,在这里我可以看到每个目录林/副本目录林以及所有目录的大小。

所以在这种情况下,我想知道每个的大小

  • 数据库
  • 索引

还想知道(而不是通过管理界面扩展)给定数据库中的总索引

管理界面中的选项,或者通过xQuery也可以。

2 个答案:

答案 0 :(得分:1)

MarkLogic不会将索引大小与数据库大小分开细分。原因之一是因为数据与Universal Index一起存储。

您可以通过一次创建一个索引,并在重新索引器运行之前和之后检查其大小来估计其他索引的大小,并且删除的片段为merged out。通常,尝试确定确切的索引大小不会带来很多好处,因为它们提供的好处通常会超过存储成本。

很难确切说明为什么存在尺寸差异。一个常见的原因是每个数据库中已删除片段的数量。删除的片段是已经marked for deletion(通常由于更新,删除或其他更改)的数据。删除的片段将继续消耗数据库空间,直到它们被合并为止。默认情况下会发生这种情况,也可以在目录林或数据库级别手动启动它。

可以通过Admin UI,查询控制台(QConsole)或通过MarkLogic REST管理API(RMA)端点来确定数据库大小和配置的索引。 QConsole支持多种语言,但是服务器端Javascript和XQuery是最常见的。 RMA可以XML或JSON返回结果。

数据库大小:

配置的索引:

答案 1 :(得分:0)

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 $space
      )
    return $f-size
  )
order by $db-size descending
return $db-name || " = " || $db-size