2012-12-07 92 views
7

我可以在不刪除MongoDB的情況下修改現有索引嗎?我在文檔中沒有看到任何關於它的信息。我可以在不刪除MongoDB的情況下修改現有索引嗎?

我在String字段上有一個非唯一索引。收藏是~6M文件。它是副本集。

我知道我可以刪除索引並添加新的索引。但它有問題,原因有兩個:

1)在索引不存在時,某些查詢將非常慢。 2)添加新的索引(在我的項目中)在DB上創建非常高的負載,這明顯減慢了我的網站。

回答

6

有沒有辦法爲你描述改變的指標,如果有,我認爲在性能方面帶來的將是類似的 - 如何將數據庫使用半創建/改變指數,而這一操作持續了例?

相反,我會建議使用background option在單個節點上構建索引,如果這是您的配置 - 這將花費更長的時間,但不會干擾您的正常操作。一旦完成,您可以在閒暇時放棄舊索引。

但是,如果你有一個副本集(推薦),你應該知道索引創建總是(當前)在副本的前臺完成。如果你想避免你的次級負載,那麼你應該遵循這裏列出的步驟,採取一員了一次一個,並建立再結合之前設置所需的指標:

http://docs.mongodb.org/manual/administration/indexes/#index-building-replica-sets

更新

從2.6版本開始,建立在次版本上的背景索引是可能的(詳見release notes)。這不會回到以前的版本,所以上面的註釋對於2.6之前的版本將是正確的。

最後,作爲一般的音符,在建的背景指標通常是更大,比那些建立在前臺效率較低,所以上面的方法仍然有用武之地。

+0

您的第一段忽略了您可能希望設置一個索引以進行疏散而沒有發生質量損失的情況。 – john

相關問題