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。