gpt4 book ai didi

mongodb - 1亿份文件是不是太多了?

转载 作者:行者123 更新时间:2023-12-04 11:03:23 26 4
gpt4 key购买 nike

好吧,我是新来的 mongo今天早上我有一个(坏)主意。我在 shell 中使用索引并决定创建一个包含许多文档(1 亿个)的大型集合。所以我执行了以下命令:

for (i = 1; i <= 100; i++) { 
for (j = 100; j > 0; j--) {
for (k = 1; k <= 100; k++) {
for (l = 100; l > 0; l--) {
db.testIndexes.insert({a:i, b:j, c:k, d:l})
}
}
}
}

然而,事情并没有像我想象的那样发展:
  • 完成请求花了 45 分钟。
  • 它在我的硬盘上创建了 16 GB 的数据。
  • 它使用了我 80% 的 RAM(总共 8GB)并且在我重新启动 PC 之前不会释放它们。

  • 如下图所示,随着集合中文档数量的增加,插入文档的时间也在增加。我建议通过数据文件的最后修改时间:

    enter image description here

    这是预期的行为吗?我不认为一亿 简单 文件太多了。

    附言我现在真的很害怕运行 ensureIndex命令。

    编辑:

    我执行了以下命令:
    > db.testIndexes.stats()
    {
    "ns" : "test.testIndexes",
    "count" : 100000000,
    "size" : 7200000056,
    "avgObjSize" : 72.00000056,
    "storageSize" : 10830266336,
    "numExtents" : 28,
    "nindexes" : 1,
    "lastExtentSize" : 2146426864,
    "paddingFactor" : 1,
    "systemFlags" : 1,
    "userFlags" : 0,
    "totalIndexSize" : 3248014112,
    "indexSizes" : {
    "_id_" : 3248014112
    },
    "ok" : 1
    }

    因此, _id 上的默认索引有超过 3GB 的大小。

    最佳答案

    It took 45 minutes complete the request.



    不惊讶。

    It created 16 GB data on my hard disk.



    正如@Abhishek 所说,一切似乎都很好,MongoDB 目前确实使用了相当数量的空间而没有压缩(希望稍后会出现)。

    似乎数据大小约为 7.2GB 而平均对象大小为 72 字节,这似乎完美地工作(因为 72 字节适合 7.2GB) _id 索引的 3GB 开销似乎是 10GB 的存储大小很合身。

    虽然我担心它使用的 6GB 比统计数据说的多,但这可能需要更多的调查。我猜这是因为 MongoDB 写入数据文件的方式,甚至可能是因为您没有使用非火灾并忘记写关注( w>0 ),总而言之;嗯。

    It used 80% of my RAM (8GB total) and it won't release them till I restarted my PC.



    MongoDB 将尝试占用操作系统允许的尽可能多的 RAM。如果操作系统允许它占用 80%,那么它将占用 80%。这实际上是一个好兆头,它表明 MongoDB 具有正确的配置值来有效地存储您的工作集。

    运行时 ensureIndex mongod永远不会释放 RAM。它只是没有 Hook ,相反,操作系统将缩小其分配的块以腾出更多空间(或者更确切地说)。

    关于mongodb - 1亿份文件是不是太多了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16999897/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com