db.collection.getShardDistribution()
定义
db.collection.getShardDistribution()
重要
mongosh 方法
本页面提供
mongosh
方法的相关信息。这不是特定于语言的驱动程序(例如 Node.js)的文档。如需了解 MongoDB API 驱动程序,请参阅特定语言的 MongoDB 驱动程序文档。
打印分分片的集合的数据分布统计信息。
兼容性
此方法可用于以下环境中托管的部署:
MongoDB Atlas:用于云中 MongoDB 部署的完全托管服务
重要
M 0 、M 2和 M 5集群不支持此命令。 有关更多信息,请参阅不支持的命令。
MongoDB Enterprise:基于订阅、自我管理的 MongoDB 版本
MongoDB Community:源代码可用、免费使用且可自行管理的 MongoDB 版本
语法
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>
是一个包含数据大小的数字,包括计量单位(例如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
,以在非正常关闭之后恢复统计信息。
非正常关闭后: