91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

mongodb索引

發布時間:2020-07-20 08:12:10 來源:網絡 閱讀:883 作者:會說話的魚 欄目:MongoDB數據庫

索引的原理

當往某各個集合插入多個文檔后,每個文檔在經過底層的存儲引擎持久化后,會有一個位置信息,通過這個位置信息,就能從存儲引擎里讀出該文檔

MMAPv1:文件id+文件內offset

WiredTiger: WiredTiger在存儲文檔時生成的一個key,通過這個key能訪問到對應 的文檔。

CPU飆升了?半天還是沒出結果?要想提升速度,你是否想起了索引!!


建立索引后,MongoDB會額外存儲一份按age字段升序排序的索引數據,索引結構類似如下,索引通常采用類似btree的結構持久化存儲,以保證從索引里快速找出某個age值對應的位置信息,然后根據位置信息就能讀取出對應的文檔。

mongodb索引

索引就是將文檔按照某個(或某些)字段順序組織起來,以便能根據該字段高效的查詢。索引的基本作用:搜索+排序


有了索引,至少能優化如下場景的效率:

    查詢,比如查詢年齡為18的所有人。

    更新/刪除,將年齡為18的所有人的信息更新或刪除,因為更新或刪除時,需要根據條件先查詢出所有符合條件的文檔,所以本質上還是在優化查詢。

    排序,將所有人的信息按年齡排序,如果沒有索引,需要全表掃描文檔,然后再對掃描的結果進行排序。

    當存在索引時,執行DML操作將會更慢(維護索引)。

    MongoDB默認會為插入的文檔生成_id字段(如果應用本身沒有指定該字段),_id是文檔唯一的標識,為了保證能根據文檔id快遞查詢文檔,MongoDB默認會為集合創建_id字段的索引。


索引的特性

索引存儲在內存(RAM)中,應該確保該索引的大小不超過內存的限制。

如果索引的大小大于內存的限制,MongoDB會刪除一些索引,這將導致性能下降。


索引掃描類型:

索引覆蓋:如果所有需要的字段都在索引中,不需要額外的字段,就可以滿足索引覆蓋的要求,不再需要從數據頁加載數據,這就是索引覆蓋。

索引掃描

集合掃描


索引的限制

1、每個collection限制64個索引。

2、索引名的長度不能超過125個字符。

3、一個復合索引最多可以有31個字段。

4、所有索引字段是一個數組,不能使用索引覆蓋查詢。

5、正則表達式及非操作符,如$nin,$not等;算術運算符,如$mod,等;$where子句。

6、索引越多寫性能越差,例如:一張頻繁修改的collection ,其索引達到20-30索引性能嚴重瓶頸。

7、建立索引是一個IO密集型操作,特別是當你的集合很大的時候。包括MySQL在內的所有支持輔助索引的數據庫系統都有這種情況。如果你需要在一個大集合上建立索引,可以考慮在后臺建立它。

8、如果很少對集合進行讀取,可以不使用索引

索引的類型

1、單字段索引

2、復合索引

3、多鍵索引

4、Hash索引

5、地理位圖索引

6、TTL索引

7、全文索引



向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

萨嘎县| 贵港市| 西吉县| 扶绥县| 滨州市| 甘洛县| 当涂县| 惠水县| 昌吉市| 东乡族自治县| 永清县| 平顺县| 阿勒泰市| 日喀则市| 南汇区| 裕民县| 邹平县| 江城| 金门县| 凯里市| 淮南市| 海南省| 新疆| 太湖县| 兴文县| 高尔夫| 乳山市| 富顺县| 河西区| 隆化县| 诏安县| 正阳县| 苍南县| 五河县| 汉沽区| 雷山县| 廉江市| 武平县| 五寨县| 合作市| 英山县|