MongoDB常見問題——索引

如何創建索引?

要在集合上創建索引,請使用 db.collection.createIndex()方法。創建索引是一種管理性操作。通常,應用程序不應該定期的調用db.collection.createIndex()

注意:

索引構建會影響性能; 請參閱 索引構建會如何影響數據庫性能?。管理員應在構建索引之前考慮性能影響。

索引構建會如何影響數據庫性能?

在集合上構建索引時(譯者注:前臺創建時),保存集合的數據庫在索引構建完成前都不可進行讀取或寫入操作。如果需要構建一個很大的索引,請考慮在後臺(background)構建索引。請參閱 對已填充數據的集合進行索引構建操作在副本集上構建索引

要返回當前正在運行的索引創建操作的相關信息,請參閱Active Indexing Operations。要終止正在運行的索引創建操作,請參閱db.killOp()。部分構建的索引將被刪除。

如何查看集合中存在哪些索引?

要列出集合的索引,請使用 db.collection.getIndexes()方法

如何查看查詢是否使用了索引?

要探查MongoDB如何處理查詢,請使用 explain()方法。

如何確定要索引的字段?

許多因素決定了要索引的字段,包括 選擇性,對多個查詢的支持以及索引的大小。更多信息,請參閱 索引策略索引操作注意事項

如何查看索引的大小?

db.collection.stats()結果包括一個indexSizes子文檔,它提供了集合中每個索引的大小信息。

根據其大小,一個索引可能無法放入內存。當服務器有足夠的內存用於索引和工作集的其餘部分時,索引將加載進內存 。當索引太大而無法放入內存時,MongoDB必須從磁盤讀取索引,這比從內存讀取的操作要慢得多。

在某些情況下,索引不需要完全放入內存。有關詳細信息,請參閱僅在內存中保留索引最近使用的值。

寫操作如何影響索引?

寫操作可能需要更新索引:

  • 如果寫入操作修改了索引相關字段,MongoDB將更新所有鍵中包含該字段的索引。
  • 當使用MMAPv1存儲引擎運行時,如果對文檔的更新導致文檔增長超過其分配的記錄大小,MongoDB會將文檔移動到新記錄並更新引用該文檔的所有索引,而不管修改的是什麼字段。

因此,如果您的應用程序寫入量大,索引可能會影響性能。

發佈了15 篇原創文章 · 獲贊 6 · 訪問量 3575
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章