gpt4 book ai didi

mongodb - Mongo 最大索引大小

转载 作者:可可西里 更新时间:2023-11-01 09:31:41 24 4
gpt4 key购买 nike

蒙戈 Docs讨论最大索引大小。

Index Key
The total size of an indexed value must be less than 1024 bytes.
MongoDB will not add that value to an index if it is longer than 1024 bytes.

使用 db.collection.stats(),我可以看到我的平均文档大小为 5 MB。如果我在占文档 50% 的字段上建立索引,是否意味着索引大小将是 50% * 5 MB = 2.5 MB

我对如何为单个文档计算索引大小感到困惑。

最佳答案

我不确定您为什么要尝试索引如此大的字段,但正如文档中所说,它不会索引超过 1024 字节的单个字段。如果您正在为一个 2.5MB 的字段建立索引,则它并没有真正对其进行索引,而是被跳过了。

如果您需要为非常大的字段数据编制索引,则需要想出一种方法来以适合 1024 字节以下的方式表示它。例如,您可能能够计算 CRC32 并对其进行索引。虽然它不太可能是完美的,但它可能“足够好”。

为了展示索引的一些奇怪之处,我整理了一个简单的演示。

  1. 新数据库(测试)
  2. value 字段上创建索引
  3. 显示统计信息
  4. 创建 1000 个文档,每个文档的唯一字段值长度为 102500 个字符且唯一
  5. 显示统计数据。

例子:

> db.test.drop()
true
> db.test.ensureIndex({value:1})
> db.test.stats()
{
"ns" : "test.test",
"count" : 0,
"size" : 0,
"storageSize" : 8192,
"numExtents" : 1,
"nindexes" : 2,
"lastExtentSize" : 8192,
"paddingFactor" : 1,
"systemFlags" : 1,
"userFlags" : 0,
"totalIndexSize" : 16352,
"indexSizes" : {
"_id_" : 8176,
"value_1" : 8176
},
"ok" : 1
}
> var data="";for(var i=0;i<102500;i++){ data+= "z";};for(var i=0;i<1000;i++){ db.test.insert({value: data + i.toString() })};
> db.test.stats()
{
"ns" : "test.test",
"count" : 1000,
"size" : 106480000,
"avgObjSize" : 106480,
"storageSize" : 123248640,
"numExtents" : 8,
"nindexes" : 2,
"lastExtentSize" : 37625856,
"paddingFactor" : 1,
"systemFlags" : 1,
"userFlags" : 0,
"totalIndexSize" : 49056,
"indexSizes" : {
"_id_" : 40880,
"value_1" : 8176
},
"ok" : 1
}

您将看到存储大小如何膨胀 (storageSize),但 totalIndexSize 仍然很小。它主要涵盖 _id

您还可以使用此技术 (http://docs.mongodb.org/manual/faq/storage/#how-can-i-check-the-size-of-indexes) 查看特定索引的详细信息。

你可以看到value索引有多小(size):

> db.test.$value_1.stats()
{
"ns" : "test.test.$value_1",
"count" : 1,
"size" : 8176,
"avgObjSize" : 8176,
"storageSize" : 36864,
"numExtents" : 1,
"nindexes" : 0,
"lastExtentSize" : 36864,
"paddingFactor" : 1,
"systemFlags" : 0,
"userFlags" : 0,
"totalIndexSize" : 0,
"indexSizes" : {

},
"ok" : 1
}

关于mongodb - Mongo 最大索引大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19144568/

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