Mongodb

添加數據之前的 MongoDB 索引

  • February 21, 2017

很多人都說在導入轉儲後做“背景索引”。但是如果你沒有轉儲怎麼辦?例如,我們正在啟動一個帶有 MongoDB 的 Docker 容器,並將其安裝在不同的伺服器上。數據將被零碎地添加。我們一次只談一張唱片。在創建數據庫時做一個 ensureIndex 會是一件壞事嗎?或者創建一個觸發器…?我沒有看到這個問題的任何答案。每個人都在說“載入數據後再做”。載入數據後我不會有機會,因為正如我所說,一次只有一條記錄進入。如果他們的使用者試圖然後通過欄位名稱對那條記錄進行搜尋,他們將永遠等待,因為它沒有被索引。怎麼辦的意見?(請禮貌回應。)

我的一般建議是在您需要廣泛使用它之前添加一個索引。沒有任何支持索引的查詢將導致集合掃描,隨著該集合中數據的增長,這將變得更加耗時且影響更大。

可以在插入任何數據之前創建索引(無論隨後是單獨插入還是批量導入)。插入更少的索引可能會更快一些,但如果您要在導入結束時需要這些索引,則可能不會顯著節省總體時間。

如果您有現有數據並想要創建新索引,則建議使用後台索引。在 MongoDB 3.4 中,前台索引建構是持有該集合的數據庫的阻塞操作,並且不建議用於生產環境,除非該數據庫未在使用中。後台索引建構將比前台索引建構花費更長的時間,但不會阻止讀取或寫入。

注意:後台索引選項僅影響初始索引建構。創建索引後,任何後續更新始終作為文件更新的一部分執行。

引用自:https://serverfault.com/questions/833741