1

默认情况下,为 _id 字段设置上限集合的自动索引的基本原理是什么?我们可以在文档中找到:

如果没有这种索引开销,上限集合可以支持更高的插入吞吐量。

有一篇关于封顶集合插入性能的帖子,我自己的测试也表明,对于插入封顶集合没有索引是最快的选择,然后是普通集合,最慢的选项是带索引的封顶集合。那么为什么在 2.2 版本中自动索引与 _id 字段一起添加,如果它达到性能,而在某些情况下,上限集合被提议作为普通集合的快速替代品呢?

4

1 回答 1

1

好吧,我们当然也不能排除 _id 在上限集合中的好处。它可以帮助您,实际上是复制所必需的。

MongoDB 默认打开它,因为现在在副本集配置中部署 MongoDB 非常正常。您可以在文档中找到更多信息,请查找 autoIndexId

我相信,缓慢的原因是索引,而不是 _id 字段本身。因此,如果您的要求有特殊需要,您可以随时禁用自动索引。

但...

您仍然需要为 _id 字段提供零 (0) 值。

例如,禁用自动索引的 2 GB 上限集合。

db.createCollection("people", { capped: true, size: 2147483648, autoIndexId: false } )

我相信这个技巧会让插入速度恢复。

于 2016-03-08T13:29:46.230 回答