Docs 菜单
Docs 主页
/
MongoDB Manual
/ / /

db.collection.getShardDistribution()

在此页面上

  • 定义
  • 兼容性
  • 语法
  • 输出
  • 行为
db.collection.getShardDistribution()

重要

mongosh 方法

本页面提供 mongosh 方法的相关信息。这不是特定于语言的驱动程序(例如 Node.js)的文档。

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

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

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

  • MongoDB Atlas:用于云中 MongoDB 部署的完全托管服务

重要

M 0 、M 2和 M 5集群不支持此命令。 有关更多信息,请参阅不支持的命令。

getShardDistribution() 方法采用以下形式:

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>

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

<count-x>

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

<number of chunks-x>

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

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

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

<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,以在非正常关闭之后恢复统计信息。

非正常关闭后:

后退

db.collection.getIndexes