db.stats()

进入mongo的shell命令模式下,db.stats() 与 db.serverStatus() 是查看当前Mongodb运行状态的两个重要命令。下面简单解释一下这两个命令。

运行db.stats(),得到例如下面这个的结构输出。

> db.stats();

{

        "db" : "test", "collections" : 3, "objects" : 13, "avgObjSize" : 36,"dataSize" : 468,  "storageSize" : 13312, "numExtents" : 3,   "indexes" : 1,  "indexSize" : 8192,  "fileSize" : 201326592, "ok" : 1

}

为了排版好看,我把输出格式做了一点变动。真实输出是每一个参数占一行。

这个命令主要是用来查看单个数据库的基本情况,例如本例中输出的是test数据库的基本情况。而之后要介绍的db.serverStatus()是介绍整个monodb实例的运行情况。下面来介绍一下各个参数

  "db" : "test" ,表示当前是针对"test"这个数据库的描述。想要查看其他数据库,可以先运行$ use databasename(e.g  $use admiin).

 "collections" : 3,表示当前数据库有多少个collections.可以通过运行show collections查看当前数据库具体有哪些collection.

 "objects" : 13,表示当前数据库所有collection总共有多少行数据。显示的数据是一个估计值,并不是非常精确。

 "avgObjSize" : 36,表示每行数据是大小,也是估计值,单位是bytes

 "dataSize" : 468,表示当前数据库所有数据的总大小,不是指占有磁盘大小。单位是bytes

 "storageSize" : 13312,表示当前数据库占有磁盘大小,单位是bytes,因为mongodb有预分配空间机制,为了防止当有大量数据插入时对磁盘的压力,因此会事先多分配磁盘空间。

 "numExtents" : 3,似乎没有什么真实意义。我弄明白之后再详细补充说明。

 "indexes" : 1 ,表示system.indexes表数据行数。

 "indexSize" : 8192,表示索引占有磁盘大小。单位是bytes

   "fileSize" : 201326592,表示当前数据库预分配的文件大小,例如test.0,test.1,不包括test.ns。