对于 AI 代理:可在 https://www.mongodb.com/zh-cn/docs/llms.txt 获取文档索引—通过在任何 URL 路径后添加 .md 可获取所有页面的 Markdown 版本。
Docs 菜单

db. 集合.getShardDistribution()(mongosh方法)

重要

mongosh 方法

This page documents a mongosh method. This is not the documentation for a language-specific driver, such as Node.js.

如需了解 MongoDB API 驱动程序,请参阅特定语言的 MongoDB 驱动程序文档。

db.collection.getShardDistribution()

打印分片集合的数据分布统计。

此方法可用于以下环境中托管的部署:

  • MongoDB Atlas: The fully managed service for MongoDB deployments in the cloud

重要

This command is not supported in M0 and Flex clusters. For more information, see Unsupported Commands.

The getShardDistribution() method has the following form:

db.collection.getShardDistribution()

注意

MongoDB Shell版本 2.3.3 中的 getShardDistribution() 行为已更改:

  • 从MongoDB Shell版本 2.3.3 开始,getShardDistribution()仅包含常规分片的数据,不考虑孤立文档。

  • 在MongoDB Shell版本 2.3.3 之前,getShardDistribution() 包括常规分片的数据和待删除的孤立文档。如果集合包含孤立文档,则即使集合在常规数据方面是平衡的,getShardDistribution() 也可能表明集合不平衡。与其他分片分片,包含孤立数据的分片具有更多文档和更大数据大小,但数据段数量相同。

下面是分片集合的分布输出示例:

Shard shard01 at shard01/localhost:27018
{
data: '38.14MB',
docs: 1000003,
chunks: 2,
'estimated data per chunk': '19.07B',
'estimated docs per chunk': 500001
}
---
Shard shard02 at shard02/localhost:27019
{
data: '38.14B',
docs: 999999,
chunks: 3,
'estimated data per chunk': '12.71B',
'estimated docs per chunk': 333333
}
---
Totals
{
data: '76.29B',
docs: 2000002,
chunks: 5,
'Shard shard01': [ '50 % data', '50 % docs in cluster', '40B avg obj size on shard' ],
'Shard shard02': [ '49.99 % data', '49.99 % docs in cluster', '40B avg obj size on shard' ]
}
Shard shard01 at <host-a> {
data: <size-a>,
docs: <count-a>,
chunks: <number of chunks-a>,
'estimated data per chunk': <size-a>/<number of chunks-a>,
'estimated docs per chunk': <count-a>/<number of chunks-a>
}
---
Shard shard02 at <host-b>
{
data: <size-b>,
docs: <count-b>,
chunks: <number of chunks-b>,
'estimated data per chunk': <size-b>/<number of chunks-b>,
'estimated docs per chunk': <count-b>/<number of chunks-b>
}
---
Totals
{
data: <stats.size>,
docs: <stats.count>,
chunks: <calc total chunks>,
Shard shard01: [ <estDataPercent-a> % data, <estDocPercent-a> % docs in cluster, stats.shards[ <shard-a> ].avgObjSize avg obj size on shard ],
Shard shard02: [ <estDataPercent-b> % data, <estDocPercent-b> % docs in cluster, stats.shards[ <shard-b> ].avgObjSize avg obj size on shard ]
}

输出信息显示:

输出
说明

<shard-x>

包含分片名称的字符串。

<host-x>

包含托管名的字符串。

<size-x>

一个包含数据大小和度量单位的数字(例如 b、Mb)。

<count-x>

一个报告分片片中文档数量的数字。

<number of chunks-x>

一个报告分片片中数据段数量的数字。

<size-x>/<number of chunks-x>

一个计算值,反映分片每个分片数据块的估计数据大小,包括度量单位(例如 b、Mb)。

<count-x>/<number of chunks-x>

一个计算值,反映分片每个分片数据块的估计文档数。

<stats.size>

报告分片的集合中数据总大小的值,包括度量单位。

<stats.count>

报告分片的集合中文档总数的值。

<calc total chunks>

一个计算得出的数字,用于报告所有分片的数据段数量。 示例:

<calc total chunks> = <number of chunks-a> + <number of chunks-b>

<estDataPercent-x>

一个计算值,反映每个分片的数据大小占集合总数据大小的百分比。 示例:

<estDataPercent-x> = <size-x>/<stats.size>

<estDocPercent-x>

一个计算值,反映每个分片的文档数占集合文档总数的百分比。 示例:

<estDocPercent-x> = <count-x>/<stats.count>

stats.shards[ <shard-x> ].avgObjSize

一个数字,反映分片的平均对象大小,包括度量单位。

使用 Wiredmongod Tiger存储引擎的 非正常关闭后,db.collection.getShardDistribution() 报告的计数和大小统计信息可能不准确。

偏差的大小取决于在最后一个检查点和非正常关闭之间执行的插入、更新或删除操作的次数。检查点通常每 60 秒出现一次。但是,如果 mongod 实例使用了非默认的 --syncdelay 设置,则检查点出现的次数可能会增多或减少。

在 mongod 的每个集合上运行 validate,以在非正常关闭之后恢复统计信息。

非正常关闭后:

给本页内容打分