Docs 主页 → 开发应用程序 → MongoDB Manual
dbStats
定义
dbStats
dbStats
命令返回给定数据库的存储统计信息。该命令的语法如下:db.runCommand( { dbStats: 1, scale: <number>, freeStorage: 0 } ) dbStats
命令采用以下字段:字段说明1可选。各种大小数据的比例因子。
scale
默认为 1,以字节为单位返回大小数据。要显示千字节而不是字节,请指定1024
的scale
值。如果指定了非整数比例因子,MongoDB 将使用该因子的整数部分。例如,如果指定比例因子为
1023.999
,MongoDB 将使用1023
作为比例因子。从版本 4.2 开始,输出包括用于缩放大小值的
scaleFactor
。可选。要返回分配给集合的可用空间信息,请将
freeStorage
设置为 1。如果实例有大量集合或索引,获取可用空间使用情况数据可能会导致处理延迟。要收集没有可用空间详细信息的
dbStats
信息,请将freeStorage
设置为0或不包含该字段。在
mongosh
中,db.stats()
函数提供了dbStats
的包装器。
行为
运行该命令所需的时间取决于数据库的总大小。由于该命令必须访问所有数据文件,因此,该命令可能需要几秒钟时间才能运行。
意外关闭后的准确性
mongod
使用 Wired Tiger 存储引擎非正常关闭 后,dbStats
报告的计数和大小统计信息可能不准确。
偏差的大小取决于在最后一个检查点和非正常关闭之间执行的插入、更新或删除操作的次数。检查点通常每 60 秒出现一次。但是,如果 mongod
实例使用了非默认的 --syncdelay
设置,则检查点出现的次数可能会增多或减少。
在 mongod
的每个集合上运行 validate
,以在非正常关闭之后恢复统计信息。
非正常关闭后:
副本集节点状态限制
要在副本集成员上运行, dbStats
操作要求该成员处于PRIMARY
或SECONDARY
状态。如果节点处于其他状态,例如STARTUP2
,则操作错误。
输出
dbStats.views
数据库中视图的数量。
dbStats.objects
数据库中所有集合的对象(特别是文档)的数量。
dbStats.dataSize
数据库中保存的未压缩数据的总大小。删除
dataSize
文档 时, 会减小。对于使用 WiredTiger 存储引擎的数据库,如果启用了压缩,则
dataSize
可能大于storageSize
。文档缩小时,dataSize
也会减小。
dbStats.storageSize
分配给数据库中所有collection用于存储文档的空间总和,包括可用空间。
storageSize
当您删除或缩小文档时, 不会减少。对于使用启用了dataSize
压缩 的 WiredTiger 存储引擎的数据库,此值可能小于 。storageSize
不包括分配给索引的空间。有关索引的总大小,请参阅indexSize
。
dbStats.freeStorageSize
为数据库中的所有集合分配用于存储文档的可用空间总和。这是分配给索引的可用数据库存储空间,而不包含数据。
freeStorageSize
不包括分配给索引的可用空间。请参阅indexFreeStorageSize
以了解可用索引的总大小。要在
dbStats
输出中包含该值,请将freeStorage设置为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.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字段,可以收集和显示突出显示的指标。
比例字段将显示的值设置为千字节。