MarkLogic - 如何知道数据库的大小、索引的大小、总索引
MarkLogic - How to know size of database, size of Index, Total indexs
我们正在使用 MarkLogic 9.0.8.2
我们已经设置了 MarkLogic 集群,摄取了大约 18M XML 文档,创建了很少的索引,例如 Fields、PathRange 等。
现在在使用配置、索引和相同数量的记录设置另一个环境时,但我无法理解为什么数据库状态页面上的总大小与以前的环境不同。
所以我开始比较两个集群的数据库状态页面,在那里我可以看到每个 forest/replica 森林和所有森林的大小。
所以在这种情况下,我想知道每个尺寸
- 数据库
- 索引
还想知道(而不是通过管理界面扩展每个)给定数据库中的总索引
管理界面中的选项或通过 xQuery 也可以。
MarkLogic 不会将索引大小与数据库大小分开。原因之一是因为数据与 Universal Index 一起存储。
您可以通过一次创建一个索引来估算其他索引的大小,并检查重建索引器运行前后的大小,删除的片段为 merged out。我们通常不会发现尝试确定确切的索引大小有很多好处,因为它们提供的好处通常超过存储成本。
很难说出尺寸差异的确切原因。一个常见的原因是每个数据库中已删除片段的数量。已删除的片段是 marked for deletion 的数据片段(通常是由于更新、删除或其他更改)。删除的片段将继续消耗数据库 space 直到它们被合并。这是默认情况下发生的,也可以在林或数据库级别手动启动。
数据库大小和配置的索引可以通过管理 UI、查询控制台 (QConsole) 或通过 MarkLogic REST 管理 API (RMA) 端点确定。 QConsole 支持多种语言,但服务器端 Javascript 和 XQuery 是最常见的。 RMA 可以 return 结果为 XML 或 JSON.
数据库大小:
- 休息:http://[host-name]:8002/manage/v2/databases/[database-name]?view=status
- QConsole:对数据库中所有森林的 xdmp.forestStatus(javascript) or xdmp:forest-status(XQuery) 林分的磁盘大小元素求和。
配置的索引:
- 休息:http://[host-name]:8002/manage/v2/databases/\database-name]?view=package
- QConsole:将 xdmp.getConfiguration(javascript) or xdmp:get-configuration(XQuery) 与 xdmp.databaseGet[索引类型] 或 xdmp:database-get-[索引类型]
结合使用
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
我们正在使用 MarkLogic 9.0.8.2
我们已经设置了 MarkLogic 集群,摄取了大约 18M XML 文档,创建了很少的索引,例如 Fields、PathRange 等。
现在在使用配置、索引和相同数量的记录设置另一个环境时,但我无法理解为什么数据库状态页面上的总大小与以前的环境不同。
所以我开始比较两个集群的数据库状态页面,在那里我可以看到每个 forest/replica 森林和所有森林的大小。
所以在这种情况下,我想知道每个尺寸
- 数据库
- 索引
还想知道(而不是通过管理界面扩展每个)给定数据库中的总索引
管理界面中的选项或通过 xQuery 也可以。
MarkLogic 不会将索引大小与数据库大小分开。原因之一是因为数据与 Universal Index 一起存储。
您可以通过一次创建一个索引来估算其他索引的大小,并检查重建索引器运行前后的大小,删除的片段为 merged out。我们通常不会发现尝试确定确切的索引大小有很多好处,因为它们提供的好处通常超过存储成本。
很难说出尺寸差异的确切原因。一个常见的原因是每个数据库中已删除片段的数量。已删除的片段是 marked for deletion 的数据片段(通常是由于更新、删除或其他更改)。删除的片段将继续消耗数据库 space 直到它们被合并。这是默认情况下发生的,也可以在林或数据库级别手动启动。
数据库大小和配置的索引可以通过管理 UI、查询控制台 (QConsole) 或通过 MarkLogic REST 管理 API (RMA) 端点确定。 QConsole 支持多种语言,但服务器端 Javascript 和 XQuery 是最常见的。 RMA 可以 return 结果为 XML 或 JSON.
数据库大小:
- 休息:http://[host-name]:8002/manage/v2/databases/[database-name]?view=status
- QConsole:对数据库中所有森林的 xdmp.forestStatus(javascript) or xdmp:forest-status(XQuery) 林分的磁盘大小元素求和。
配置的索引:
- 休息:http://[host-name]:8002/manage/v2/databases/\database-name]?view=package
- QConsole:将 xdmp.getConfiguration(javascript) or xdmp:get-configuration(XQuery) 与 xdmp.databaseGet[索引类型] 或 xdmp:database-get-[索引类型] 结合使用
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