默认情况下,对于上限集合,在_id字段上设置自动索引的理由是什么?我们可以在docs中找到:
如果没有这种索引开销,上限集合可以支持更高的插入吞吐量。
有一个post关于上限的集合插入性能,我自己的测试也表明,对于插入上限集合没有索引是最快的选项,那么正常的集合会去,并且最慢的选项是带索引的上限集合。那么为什么自动索引与版本2.2中的_id字段一起添加,如果它达到性能,而加盖集合被提议作为某些场景中正常集合的快速替代品?
答案 0 :(得分:1)
嗯,我们当然也不能排除_id在封顶收藏中的好处。它可以帮助您,实际上也需要复制。
MongoDB默认打开它,因为MongoDB在副本集配置中的部署现在非常正常。您可以在documentation中找到更多信息,请查找autoIndexId
我相信,缓慢的原因是索引,而不是_id字段本身。因此,如果您的要求需要特殊需求,您可以随时禁用自动索引。
但是...
你仍然需要为_id字段提供零(0)值。
e.g。禁用自动索引的2 GB上限集合。
db.createCollection("people", { capped: true, size: 2147483648, autoIndexId: false } )
我确信这个技巧会带来插入速度。