dbStats
定义
dbStats
dbStats
命令可返回给定数据库的存储统计信息。
兼容性
此命令可用于以下环境中托管的部署:
MongoDB Atlas:用于云中 MongoDB 部署的完全托管服务
重要
此命令在 M 0 、 M 2和 M 5集群中提供有限支持。 有关更多信息,请参阅不支持的命令。
MongoDB Enterprise:基于订阅、自我管理的 MongoDB 版本
MongoDB Community:源代码可用、免费使用且可自行管理的 MongoDB 版本
语法
该命令具有以下语法:
db.runCommand( { dbStats: 1, scale: <number>, freeStorage: 0 } )
命令字段
该命令接受以下字段:
字段 | 说明 |
---|---|
1 | |
可选。各种大小数据的比例因子。 如果指定了非整数比例因子,MongoDB 将使用该因子的整数部分。例如,如果指定比例因子为 从版本 4.2 开始,输出包括用于缩放大小值的 | |
可选。要返回分配给集合的可用空间信息,请将 如果实例有大量集合或索引,获取可用空间使用情况数据可能会导致处理延迟。如要收集不含可用空间详情的 |
在 mongosh
中,db.stats()
函数提供了有关 dbStats
的包装器。
行为
运行该命令所需的时间取决于数据库的总大小。由于该命令必须访问所有数据文件,因此,该命令可能需要几秒钟时间才能运行。
意外关闭后的准确性
使用 Wired Tiger 存储引擎非正常关闭 mongod
后,dbStats
报告的计数和大小统计数据可能不准确。
偏差的大小取决于在最后一个检查点和非正常关闭之间执行的插入、更新或删除操作的次数。检查点通常每 60 秒出现一次。但是,如果 mongod
实例使用了非默认的 --syncdelay
设置,则检查点出现的次数可能会增多或减少。
在 mongod
的每个集合上运行 validate
,以在非正常关闭之后恢复统计信息。
非正常关闭后:
副本集节点状态限制
若要在副本集节点上运行,dbStats
操作要求该节点处于 PRIMARY
或 SECONDARY
状态。如果该节点处于其他状态,如 STARTUP2
,则操作错误。
输出
dbStats.views
数据库中视图的数量。
dbStats.objects
数据库中所有集合的对象(特别是文档)的数量。
dbStats.dataSize
数据库中保存的未压缩数据的总大小。当您删除文档时,
dataSize
会随之变小。对于使用 WiredTiger 存储引擎的数据库,如果启用了压缩,则
dataSize
可能大于storageSize
。文档缩小时,dataSize
也会减小。
dbStats.storageSize
分配给数据库中用于存储文档的所有集合的磁盘空间总和,包括可用空间。
删除或缩小文档时,
storageSize
不会随之减少。对于使用启用了压缩功能的 WiredTiger 存储引擎的数据库,该值可能小于dataSize
。storageSize
不包括分配给索引的空间。如需了解索引的总大小,请参阅indexSize
。
dbStats.freeStorageSize
为数据库中的所有集合分配用于存储文档的可用空间总和。这是分配给索引的可用数据库存储空间,而不包含数据。
freeStorageSize
不包括分配给索引的可用空间。如需了解可用索引的总大小,请参阅indexFreeStorageSize
。如要在
dbStats
输出中包含该值,请将 freeStorage 设置为 1。在版本 5.3.0、5.2.1 和 5.0.6 中更新。
dbStats.indexFreeStorageSize
分配给数据库中所有索引的可用磁盘空间的总和。将可用数据库存储空间分配给索引,但不包含数据。
indexFreeStorageSize
不包括分配给文档存储的可用空间。有关文档可用存储总大小,请参阅freeStorageSize
。indexFreeStorageSize
不包括正在进行的索引创建。如要在
dbStats
输出中包含该值,请将 freeStorage 设置为 1。在 7.0、6.3.2、6.0.7、5.3.0、5.2.1、5.0.19 和 5.0.6 版本中更新
dbStats.totalSize
为数据库中所有集合内的文档和索引分配的磁盘空间总和。包括已用存储空间和可用存储空间。它是
storageSize
和indexSize
的总和。
dbStats.totalFreeStorageSize
为数据库中所有集合内的文档和索引分配的可用存储空间总和。它是
freeStorageSize
和indexFreeStorageSize
的总和。如要在
dbStats
输出中包含该值,请将 freeStorage 设置为 1。在版本 5.3.0、5.2.1 和 5.0.6 中更新。
示例
以下示例演示了 dbStats
的用法。
返回的限制数据
要将返回的数据限制为单个字段,请在 dbStats
命令后添加字段名称。本例中返回的是 indexSize
值:
db.runCommand( { dbStats: 1 } ).indexSize
查看分配给集合的可用空间
要查看可用存储使用情况,请将 freeStorage 设置为 1。
db.runCommand( { dbStats: 1, scale: 1024, freeStorage: 1 } )
示例输出:
{ db: 'test', collections: 2, views: 0, objects: 1689, avgObjSize: 52.56542332741267, dataSize: 86.7021484375, storageSize: 100, freeStorageSize: 32, indexes: 2, indexSize: 116, indexFreeStorageSize: 36, totalSize: 216, totalFreeStorageSize: 68, scaleFactor: 1024, fsUsedSize: 60155820, fsTotalSize: 61255492, ok: 1, '$clusterTime': { clusterTime: Timestamp({ t: 1646085664, i: 1 }), signature: { hash: Binary(Buffer.from("0000000000000000000000000000000000000000", "hex"), 0), keyId: Long("0") } }, operationTime: Timestamp({ t: 1646085664, i: 1 }) }
使用 freeStorage 字段,将能够收集和显示突出显示的指标。
scale 字段将显示的值设置为千字节 (KB)。