【问题标题】:How to know MongoDB collection size?如何知道 MongoDB 集合大小?
【发布时间】:2017-01-18 06:42:43
【问题描述】:

db.collection.stats()

回应:

    "count" : 20696445,
    "size" : NumberLong("1478263842661"),
    "storageSize" : 334732324864,
    "totalIndexSize" : 676327424,
    "indexSizes" : {
            "_id_" : 377094144,
            "leadID_1" : 128049152,
            "leadID_hashed" : 171184128
    },
    "avgObjSize" : 71425.97884134208

我的实际磁盘大小与 storageSize 匹配。那么大小和其他键是多少。

【问题讨论】:

标签: mongodb


【解决方案1】:

您没有提到您正在使用的 MongoDB 服务器的版本,但鉴于您的数据的 size 比磁盘上的 storageSize 大得多,我假设您使用的是 WiredTiger storage engine 其中 @987654322 @ 默认。 WiredTiger 存储引擎最初作为 MongoDB 3.0 生产系列中的一个选项提供,并成为 MongoDB 3.2+ 中新部署的默认存储引擎。

在您的示例输出中,您似乎有 1.4TB 的未压缩 data,目前在磁盘上占用 334GB(storageSize 值)。此集合的索引使用的存储空间在indexSizes 下单独报告,汇总为totalIndexSize

collection.stats() 的输出将根据您的 MongoDB 服务器版本和配置的存储引擎而有所不同,但通常在 MongoDB 手册中作为output of the collStats command 的一部分进行描述,该db.collection.stats() shell 助手调用。

注意:MongoDB documentation 是版本化的,因此您应始终确保您引用的文档与您的 MongoDB 发行系列(即 3.2、3.4、...)相匹配。默认文档链接将指向当前的生产版本。

【讨论】:

    【解决方案2】:

    参考link

    collStats.size
    集合中所有记录在内存中的总大小。此值不包括记录标头(每条记录 16 个字节),但确实包括记录的填充。此外,大小不包括与集合关联的任何索引的大小,由 totalIndexSize 字段报告。

    scale 参数影响这个值。

    collStats.storageSize
    分配给此集合用于文档存储的存储总量。 scale 参数会影响此值。

    storageSize 不包括索引大小。请参阅 totalIndexSize 了解索引大小。

    【讨论】:

    • 感谢您的回答,我担心 size1.4TBstorageSize334GB .为什么存在这么大的空间差异。它是如何计算的?
    • @SelvaKumar WiredTiger 压缩磁盘上的数据; 1.4 TB 是原始文档大小,占用 334 GB 磁盘空间。
    • @Bouke - 谢谢
    猜你喜欢
    • 1970-01-01
    • 2021-07-01
    • 2016-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-12
    相关资源
    最近更新 更多