2016-03-08 26 views
0

缺省情況下,在_id字段上使用_id字段的自動索引的原因是什麼?我們可以在docs找到:Capped集合和_id自動索引

沒有這種索引開銷,封頂集合可以支持更高的插入吞吐量。

有一個post約加蓋收集插入性能和我自己的測試也表明,刀片加蓋收集沒有索引是最快的選項,然後正常收集去,和最慢的選項加蓋收集與索引。那麼爲什麼汽車索引在版本2.2中與_id字段一起添加,如果它達到了性能,而在某些情況下,封頂集合被提議作爲正常集合的快速替代品?

回答

0

那麼,我們當然也不能排除_id在封頂集合中的好處。它可以幫助您並且實際上需要進行復制。

默認情況下,MongoDB將其打開,因爲在副本集配置中部署MongoDB現在非常正常。你可以找到更多的信息在documentation,請查找autoIndexId

我認爲,慢的原因是指數,而不是_id領域本身。因此,如果您的要求保證特殊需求,您可以隨時禁用自動索引。

但是......

你仍然需要用零(0)值提供_id領域。

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

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

我相信這個技巧會帶來插入速度。

+0

@Salem,謝謝你的回覆。 autoIndexId實際上是我用來測試插入性能的東西。是的,如果你禁用它,插入會更快。但是保持啓用的原因是什麼?我現在唯一看到的是,對於副本集,所有集合都必須將autoIndexId設置爲true。至於維護插入順序:對於封頂收集,它也可以無索引地工作。 – wombatonfire

+0

是的,它維持廣告訂單,但沒有保證。此外,MongoDB(公司)瞄準大規模可擴展性並與一些主要參與者競爭,因此他們稱之爲更有利於目標的更普遍使用,而不是某些特殊用途 – Saleem

+0

這是他們默認啓用自動索引的原因。他們再次允許我們根據特殊情況下的需求調整MongoDB。 – Saleem