签到成功

知道了

CNDBA社区CNDBA社区

MongoDB 查看 数据库 和 集合 的 大小

2022-05-09 20:37 4464 0 原创 MongoDB
作者: dave

1 统计信息查看


MongoDB 的统计信息中包含了数据库和集合的相关信息,可以通过统计信息来查看数据和集合的大小。

对于库级统计信息:http://www.cndba.cn/cndba/dave/article/107983

http://www.cndba.cn/cndba/dave/article/107983

官网信息:
https://www.mongodb.com/docs/manual/reference/method/db.stats/http://www.cndba.cn/cndba/dave/article/107983

可以通过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/http://www.cndba.cn/cndba/dave/article/107983

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为单位显示):http://www.cndba.cn/cndba/dave/article/107983

http://www.cndba.cn/cndba/dave/article/107983

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为单位显示):http://www.cndba.cn/cndba/dave/article/107983

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,

这里的相关解释如下:http://www.cndba.cn/cndba/dave/article/107983

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/

因为统计信息显示的信息比较多,也可以直接查询单个值:http://www.cndba.cn/cndba/dave/article/107983

集合在内存中所有未压缩的文档的大小,默认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 命令单个选项的封装。http://www.cndba.cn/cndba/dave/article/107983

版权声明:本文为博主原创文章,未经博主允许不得转载。

用户评论
* 以下用户言论只代表其个人观点,不代表CNDBA社区的观点或立场
dave

dave

关注

人的一生应该是这样度过的:当他回首往事的时候,他不会因为虚度年华而悔恨,也不会因为碌碌无为而羞耻;这样,在临死的时候,他就能够说:“我的整个生命和全部精力,都已经献给世界上最壮丽的事业....."

  • 2279
    原创
  • 3
    翻译
  • 579
    转载
  • 196
    评论
  • 访问:8156613次
  • 积分:4413
  • 等级:核心会员
  • 排名:第1名
精华文章
    最新问题
    查看更多+
    热门文章
      热门用户
      推荐用户
        Copyright © 2016 All Rights Reserved. Powered by CNDBA · 皖ICP备2022006297号-1·

        QQ交流群

        注册联系QQ