dbStats (original) (raw)
dbStats
The dbStats command returns storage statistics for a given database.
This command is available in deployments hosted in the following environments:
- MongoDB Atlas: The fully managed service for MongoDB deployments in the cloud
Important
This command has limited support in M0, M2, M5, and Flex clusters. For more information, see Unsupported Commands.
- MongoDB Enterprise: The subscription-based, self-managed version of MongoDB
- MongoDB Community: The source-available, free-to-use, and self-managed version of MongoDB
The command has the following syntax:
db.runCommand(
{
dbStats: 1,
scale: <number>,
freeStorage: 0
}
)
The command takes the following fields:
Fields | Description |
---|---|
dbStats | 1 |
scale | Optional. The scale factor for the various size data. Thescale defaults to 1 to return size data in bytes. To display kilobytes rather than bytes, specify a scalevalue of 1024.If you specify a non-integer scale factor, MongoDB uses the integer part of the specified factor. For example, if you specify a scale factor of 1023.999, MongoDB uses 1023as the scale factor.Starting in version 4.2, the output includes the scaleFactorused to scale the size values. |
freeStorage | Optional. To return details on free space allocated to collections, set freeStorage to 1.If the instance has a large number of collections or indexes, obtaining free space usage data may cause processing delays. To gather dbStats information without free space details, either set freeStorage to 0 or do not include the field. |
In mongosh, the db.stats() function provides a wrapper around dbStats.
The time required to run the command depends on the total size of the database. Because the command must touch all data files, the command may take several seconds to run.
After an unclean shutdown of a mongod using the Wired Tiger storage engine, count and size statistics reported bydbStats may be inaccurate.
The amount of drift depends on the number of insert, update, or delete operations performed between the last checkpoint and the unclean shutdown. Checkpoints usually occur every 60 seconds. However, mongod instances running with non-default --syncdelay settings may have more or less frequent checkpoints.
Run validate on each collection on the mongodto restore statistics after an unclean shutdown.
After an unclean shutdown:
- validate updates the count statistic in the collStats output with the latest value.
- Other statistics like the number of documents inserted or removed in the collStats output are estimates.
To run on a replica set member, dbStats operations require the member to be in PRIMARY or SECONDARY state. If the member is in another state, such as STARTUP2, the operation errors.
dbStats.db
Name of the database.
dbStats.collections
Number of collections in the database.
dbStats.views
Number of views in the database.
dbStats.objects
Number of objects (specifically, documents) in the database across all collections.
dbStats.avgObjSize
Average size of each document in bytes. This is thedataSize divided by the number of documents. Thescale argument does not affect theavgObjSize
value.
dbStats.dataSize
Total size of the uncompressed data held in the database. ThedataSize decreases when you remove documents.
For databases using the WiredTiger storage engine, dataSize
may be larger than storageSize
if compression is enabled. ThedataSize
decreases when documents shrink.
dbStats.storageSize
Sum of the disk space allocated to all collections in the database fordocument storage, including free space.
The storageSize does not decrease as you remove or shrink documents. This value may be smaller thandataSize for databases using the WiredTiger storage engine with compressionenabled.
storageSize does not include space allocated to indexes. See indexSize for the total index size.
dbStats.freeStorageSize
Sum of the free space allocated to all collections in the database for document storage. Free database storage space is allocated to the collection but does not contain data.
freeStorageSize does not include free space allocated to indexes. See indexFreeStorageSize for the total free index size.
To include this value in the dbStats output, setfreeStorage to 1.
Updated in version 5.3.0, 5.2.1, and 5.0.6
dbStats.indexes
Total number of indexes across all collections in the database.
dbStats.indexSize
Sum of the disk space allocated to all indexes in the database, including free index space.
dbStats.indexFreeStorageSize
Sum of the free disk space allocated to all indexes in the database. Free database storage space is allocated to the index but does not contain data.
indexFreeStorageSize does not include free space allocated to document storage. See freeStorageSizefor the total free document storage size.
indexFreeStorageSize does not include in-progress index builds.
To include this value in the dbStats output, setfreeStorage to 1.
Updated in version 7.0, 6.3.2, 6.0.7, 5.3.0, 5.2.1, 5.0.19, and 5.0.6
dbStats.totalSize
Sum of the disk space allocated for both documents and indexes in all collections in the database. Includes used and free storage space. This is the sum of storageSize andindexSize.
dbStats.totalFreeStorageSize
Sum of the free storage space allocated for both documents and indexes in all collections in the database. This is the sum offreeStorageSize andindexFreeStorageSize.
To include this value in the dbStats output, setfreeStorage to 1.
Updated in version 5.3.0, 5.2.1, and 5.0.6.
dbStats.scaleFactor
scale
value used by the command.
If you specified a non-integer scale factor, MongoDB uses the integer part of the specified factor. For example, if you specify a scale factor of 1023.999
, MongoDB uses 1023
as the scale factor.
dbStats.fsUsedSize
Total size of all disk space in use on the filesystem where MongoDB stores data.
See also:
dbStats.fsTotalSize
Total size of all disk capacity on the filesystem where MongoDB stores data.
The following examples demonstrate dbStats usage.
To limit the data returned to a single field, append the field name to the dbStats command. This example returns theindexSize value:
db.runCommand( { dbStats: 1 } ).indexSize
To view free storage usage, set freeStorage to 1.
db.runCommand( { dbStats: 1, scale: 1024, freeStorage: 1 } )
Example output:
{
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 })
}
The freeStorage field enables the collection and display of the highlighted metrics.
The scale field sets the displayed values to kilobytes.