1 统计信息查看
MongoDB 的统计信息中包含了数据库和集合的相关信息,可以通过统计信息来查看数据和集合的大小。
对于库级统计信息:
官网信息:
https://www.mongodb.com/docs/manual/reference/method/db.stats/
可以通过db.stats(scale)方法来查看相关的统计信息,db.stats()方法是对 dbStats 数据库命令的封装。
dbStats
https://www.mongodb.com/docs/manual/reference/command/dbStats/
集合级统计信息:
db.collection.stats()
https://www.mongodb.com/docs/manual/reference/method/db.collection.stats/
db.collection.stats()方法同样是对collStats 数据库命令的封装。
collStats
https://www.mongodb.com/docs/manual/reference/command/collStats/
2 查看库的大小
[dave@www.cndba.cn_2 ~]# mongo_conn 27018
MongoDB shell version v4.4.13
shard1:PRIMARY> use cndba
switched to db cndba
shard1:PRIMARY> db.stats()
{
"db" : "cndba",
"collections" : 1,
"views" : 0,
"objects" : 33755,
"avgObjSize" : 34,
"dataSize" : 1147670,
"storageSize" : 536576,
"indexes" : 2,
"indexSize" : 1572864,
"totalSize" : 2109440,
"scaleFactor" : 1,
"fsUsedSize" : 5834960896,
"fsTotalSize" : 52601794560,
"ok" : 1,
"$gleStats" : {
"lastOpTime" : Timestamp(0, 0),
"electionId" : ObjectId("7fffffff0000000000000009")
},
"lastCommittedOpTime" : Timestamp(1652078534, 1),
"$configServerState" : {
"opTime" : {
"ts" : Timestamp(1652078538, 5),
"t" : NumberLong(9)
}
},
"$clusterTime" : {
"clusterTime" : Timestamp(1652078538, 5),
"signature" : {
"hash" : BinData(0,"iqDiWpKk8TUIG23PzdjdqsXB2Uw="),
"keyId" : NumberLong("7093529851058978835")
}
},
"operationTime" : Timestamp(1652078534, 1)
}
shard1:PRIMARY>
因为db.stats()是对dbStats的封装,所以输出内容格式可以直接参考dbStats的内容:
https://www.mongodb.com/docs/manual/reference/command/dbStats/
相关选项说明如下:
db:当前数据库名称
collections:当前数据库中collection数量
views: 当前数据库中view数量
objects:当前数据库所有集合中文档的总数。
avgObjSize:每个文档的平均大小(bytes), 等于dataSize/objects, 我们这里就是1147670/33755=34 bytes。
dataSize:所有未压缩的数据总大小,当删除文档时,该值也会缩小。
storageSize:数据库为存储文档所分配的所有空间大小,包括空闲空间。
indexes:数据库中所有集合上的索引总数
indexSize:数据库为索引分配的所有空间,包括空闲索引空间。
totalSize:数据库为文档和索引分片的所有空间。 = indexSize + storageSize。
scale:默认为1,以字节返回大小的数据。要以KB 单位,指定scale值1024。
fsUsedSize:MongoDB 存储数据在文件系统中所占用的总磁盘空间。
fsTotalSize:MongoDB 在文件系统可使用的磁盘磁盘空间。即—dbpath 路径对应目录下的可用空间大小。
也可以直接查询某个具体的值:
[dave@www.cndba.cn_2 ~]# mongo_conn 27018
MongoDB shell version v4.4.13
shard1:PRIMARY> use cndba
switched to db cndba
shard1:PRIMARY> db.stats().indexSize
1572864
shard1:PRIMARY> db.stats(1024).indexSize
1536
shard1:PRIMARY>
3 查看集合的大小
查看集合的统计信息(以byte为单位显示):
shard1:PRIMARY> db.user.stats()
{
"ns" : "cndba.user",
"size" : 1147670,
"count" : 33755,
"avgObjSize" : 34,
"storageSize" : 536576,
"freeStorageSize" : 0,
"capped" : false,
……
"nindexes" : 2,
"indexBuilds" : [ ],
"totalIndexSize" : 1572864,
"totalSize" : 2109440,
"indexSizes" : {
"_id_" : 954368,
"_id_hashed" : 618496
},
"scaleFactor" : 1,
"ok" : 1,
……
查看集合的统计信息(以kb为单位显示):
shard1:PRIMARY> db.user.stats(1024)
{
"ns" : "cndba.user",
"size" : 1120,
"count" : 33755,
"avgObjSize" : 34,
"storageSize" : 524,
"freeStorageSize" : 0,
"capped" : false,
"wiredTiger" : {
"metadata" : {
"formatVersion" : 1
},
……
"nindexes" : 2,
"indexBuilds" : [ ],
"totalIndexSize" : 1536,
"totalSize" : 2060,
"indexSizes" : {
"_id_" : 932,
"_id_hashed" : 604
},
"scaleFactor" : 1024,
"ok" : 1,
这里的相关解释如下:
Ns: 当前集合名称。
Size:集合在内存中所有未压缩的文档的大小(The total uncompressed size in memory of all records in a collection),该值不包含索引的空间。
Count:集合中文档的总数。
avgObjSize: 集合中文档的平均大小。
storageSize:集合存储文档分配的总空间,该值不包含索引占用的空间。
freeStorageSize:MongoDB 4.4 版本的中属性,可重用的存储空间大小。 不适用In-Memory 引擎。
Nindexes:集合上所有索引的总数,至少有1个索引:_id.
indexBuilds: 正在重建的索引名称,一旦重建完成,这里显示为空。
totalIndexSize:所有索引的总大小,从4.2 开始,该值包含正在创建的索引的大小。
totalSize:MongoDB 4.4 中引入,= storageSize + totalIndexSize。
indexSizes:每个索引的大小。
参考:
collStats
https://www.mongodb.com/docs/manual/reference/command/collStats/
因为统计信息显示的信息比较多,也可以直接查询单个值:
集合在内存中所有未压缩的文档的大小,默认bytes 显示:
shard1:PRIMARY> db.user.dataSize()
1147670
shard1:PRIMARY>
为collection分配的空间大小,包括未使用的空间。
shard1:PRIMARY> db.user.storageSize()
536576
collection中索引数据大小
shard1:PRIMARY> db.user.totalIndexSize()
1572864
shard1:PRIMARY>
collection中索引+data所占空间,以字节为单位
shard1:PRIMARY> db.user.totalSize()
2109440
这种单独查询的方法,官方手册有说明,是为了方便查询对collStats 命令单个选项的封装。
版权声明:本文为博主原创文章,未经博主允许不得转载。