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