文档菜单
文档首页
/
MongoDB 手册
/ / /

$shardedDataDistribution (聚合)

本页内容

  • 定义
  • 语法
  • 输出字段
  • 行为
  • 示例
  • 返回所有分片数据分布指标
  • 返回特定分片的指标
  • 返回命名空间的指标
  • 确认没有孤儿文档存在
$shardedDataDistribution

新功能在版本6.0.3.

中返回关于分片集合中数据分布的信息。

注意

此聚合阶段仅在mongos.

上可用。此聚合阶段必须在 admin 数据库上运行。用户必须具有 shardedDataDistribution 权限操作。

$shardedDataDistribution 阶段有以下语法

db.aggregate( [
{ $shardedDataDistribution: { } }
] )

$shardedDataDistribution 阶段为数据库中的每个分片集合输出一个文档数组。这些文档包含以下字段

字段名称
数据类型
描述
ns
字符串
分片集合的命名空间。
shards
数组
包含每个分片数据分布信息的集合中的分片。
shards.numOrphanedDocs
整数
分片中的孤儿文档数量。
shards.numOwnedDocuments
整数
分片拥有的文档数量。
shards.ownedSizeBytes
整数
分片拥有的文档未压缩时的大小(字节)。
shards.orphanedSizeBytes
整数
分片中的孤儿文档未压缩时的大小(字节)。

从MongoDB 8.0开始,如果主分片有数据块孤儿文档,则$shardedDataDistribution只返回集合的主分片的输出。

在使用Wired Tiger存储引擎的mongod不干净关闭后,大小和计数$shardedDataDistribution报告的统计数据可能不准确。

漂移量取决于最后一次检查点和不干净关闭之间执行的插入、更新或删除操作的数量。检查点通常每60秒发生一次。然而,具有非默认--syncdelay设置的mongod实例可能具有更频繁或更少频繁的检查点。

在每个mongod上的每个集合上运行validate以在不干净关闭后恢复统计数据。

在不干净关闭后

  • validate更新collStats输出中的计数统计信息为最新值。

  • 输出中的其他统计数据,如插入或删除的文档数量,是估计值。

要返回所有分片数据分布指标,运行以下命令

db.aggregate([
{ $shardedDataDistribution: { } }
])

示例输出

[
{
"ns": "test.names",
"shards": [
{
"shardName": "shard-1",
"numOrphanedDocs": 0,
"numOwnedDocuments": 6,
"ownedSizeBytes": 366,
"orphanedSizeBytes": 0
},
{
"shardName": "shard-2",
"numOrphanedDocs": 0,
"numOwnedDocuments": 6,
"ownedSizeBytes": 366,
"orphanedSizeBytes": 0
}
]
}
]

要返回特定分片的分片数据分布指标,运行以下命令

db.aggregate([
{ $shardedDataDistribution: { } },
{ $match: { "shards.shardName": "<name of the shard>" } }
])

要返回命名空间的分片数据分布数据,请运行以下命令

db.aggregate([
{ $shardedDataDistribution: { } },
{ $match: { "ns": "<database>.<collection>" } }
])

从MongoDB 6.0.3版本开始,您可以使用以下聚合操作来确认没有孤立文档存在$shardedDataDistribution 阶段

db.aggregate([
{ $shardedDataDistribution: { } },
{ $match: { "ns": "<database>.<collection>" } }
])

$shardedDataDistribution 的输出类似以下内容

[
{
"ns": "test.names",
"shards": [
{
"shardName": "shard-1",
"numOrphanedDocs": 0,
"numOwnedDocuments": 6,
"ownedSizeBytes": 366,
"orphanedSizeBytes": 0
},
{
"shardName": "shard-2",
"numOrphanedDocs": 0,
"numOwnedDocuments": 6,
"ownedSizeBytes": 366,
"orphanedSizeBytes": 0
}
]
}
]

确保集群中每个分片上的 "numOrphanedDocs" 均为 0

返回

$setWindowFields