mongodb中的数据库dataSize

时间:2011-05-30 15:26:41

标签: mongodb database

使用以下命令,我可以获得特定集合的数据大小:

db.collection.dataSize()

如何获取数据库的数据?

4 个答案:

答案 0 :(得分:37)

在mongoshell上使用以下命令:

 db.stats()

输出应该是这样的:

{
  "collections" : 3,
  "objects" : 80614,
  "dataSize" : 21069700,
  "storageSize" : 39845376,
  "numExtents" : 9,
  "indexes" : 2,
  "indexSize" : 6012928,
  "ok" : 1
}

查看更多诊断命令here

答案 1 :(得分:4)

在Java中使用db.getStats()

CommandResult re = db.getStats();
for(String k: re.keySet()){
    System.out.println(k+"="+re.get(k) );
}

然后会得到如下结果:

serverUsed=127.0.0.1:27017
db=test
collections=3
objects=100004
avgObjSize=67.99876004959802
dataSize=6800148
storageSize=10633216
numExtents=9
indexes=1
indexSize=4406864
fileSize=50331648
nsSizeMB=16
ok=1.0

答案 2 :(得分:4)

dbStats命令返回给定数据库的不同存储统计信息。 正如this post中所述,您应该监控的不同MongoDB性能指标(使用MMAPv1),您提到的dataSize指标会衡量数据库中所有文档和填充所占用的空间。 要在磁盘上获取数据库的“存储空间”,您应该查看与数据文件大小相对应的fileSize指标。仅当您删除数据库时它才会减少,并且在删除集合,文档或索引时不会受到影响。

这是一张包含dbStats返回的不同重要存储指标的图表: enter image description here

另请注意,使用MMAPv1存储引擎时,映射内存(mem.mapped指标)对应于用于将数据库映射到内存的虚拟内存量,可以很好地近似计算内存的总大小。你的数据库。您可以使用serverStatus command访问此指标。

答案 3 :(得分:1)

在MongoDB中:

db.stats()         //For db status
db.<collectionname>.stats() //For collection status

在Python中:

connection = pymongo.Connection(host = "127.0.0.1", port = 27017)
db = connection["test_db"]
test_collection = db["test_collection"]
db.command("dbstats") # prints database stats for "test_db"
db.command("collstats", "test_collection") # prints collection-level stats for "test_collection" under "test_db".  

在PHP中:

$con= new Mongo()

$stats=$con->dbName->command(array('dbStats' => 1));  // for db.stats()

$stats=$con->dbName->command(array('collStats' => 'collection_name')); // for db.collection_name.stats()