【问题标题】:database dataSize in mongodbMongoDB中的数据库数据大小
【发布时间】:2011-05-30 15:26:41
【问题描述】:

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

db.collection.dataSize()

如何获取数据库的数据大小?

【问题讨论】:

    标签: mongodb database


    【解决方案1】:

    在 mongoshell 中使用以下命令:

     db.stats()
    

    输出应该是这样的:

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

    查看更多诊断命令here

    【讨论】:

    • datasize 和 storagesize 数字属于什么类型?
    • dataSize 和 storageSize 以字节为单位。见 - sizing and trimming
    • 我知道这个问题很老了。真的很旧,但有没有办法将这些结果插入到不同的集合中?我想每天运行这个来衡量数据库的增长。
    【解决方案2】:

    在 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
    

    【讨论】:

      【解决方案3】:

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

      这是一个图表,其中包含 dbStats 返回的不同重要存储指标:

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

      【讨论】:

        【解决方案4】:

        在 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()
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2021-12-20
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多