$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
以在不干净关闭后恢复统计数据。
在不干净关闭后
示例
返回所有分片数据分布指标
要返回所有分片数据分布指标,运行以下命令
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