鍍金池/ 問答/數(shù)據(jù)庫  HTML/ 關(guān)于mongoose autoIndex的疑惑

關(guān)于mongoose autoIndex的疑惑

mongoose上的官方文檔說autoIndex這個屬性為true時,當(dāng)應(yīng)用啟動的時候, mongoose會自動為你的schema調(diào)用ensureIndex確保生成索引. 開發(fā)環(huán)境用這個很好, 但是建議在生產(chǎn)環(huán)境不要使用這個.那樣的話要怎么建索引,難道要手動的用mongo shell一個一個的建索引嗎?

回答
編輯回答
扯不斷

創(chuàng)建索引本來就是一次性的工作,在mongo shell里面手動創(chuàng)建是最好的選擇,為什么要說“難道”呢?
這不僅是會執(zhí)行多少次的問題,還有什么時間執(zhí)行,以及是否影響到生產(chǎn)環(huán)境的問題。要理解索引過程對于數(shù)據(jù)庫是一個很大的消耗,前臺索引會鎖住整個集合上的所有CRUD操作,后臺索引雖然沒有直接上鎖,但仍然需要消耗大量CPU和IO來讀取文檔和修改索引。無論哪種都有可能消耗大量的時間和資源(比如在一個比較大的集合上新建一個索引)。mongoose不建議在生產(chǎn)環(huán)境使用的原因也在這里。
生產(chǎn)環(huán)境要求的是穩(wěn)定,方便只是其次。在影響到“穩(wěn)定”的時候讓步的必然是“方便”。

2017年8月30日 11:28