【MongoDB】MongoDB之八大最佳化技巧

來源:互聯網
上載者:User

標籤:mongodb   最佳化技巧   

技巧一、盡量減少磁碟訪問記憶體訪問要比磁碟訪問快得多。所以使用最佳化的本質就是儘可能地減少對磁碟的訪問。 
記憶體的讀取速度要比磁碟速度快一百萬倍。讀磁碟要消耗很長時間。幾種簡單的辦法:使用SSD(固態硬碟);增加記憶體可以減少對硬碟的讀取,讓常用的文檔在記憶體中;技巧二、使用索引減少記憶體佔用索引是有序的,所以不必遍曆全部項。當查詢時候會先根據索引查到索引中的結果,然後合格文檔載入到記憶體中,從而減少記憶體佔用。技巧三、不要到處使用索引這裡要注意,不是所有的查詢都可以用索引的。索引一般用在返回結果只是總體資料的一小部分的時候。根據經驗,一旦要大約返回集合一半的資料就不要使用索引了。 
若是已經對某個欄位建立了索引,又想在大規模模糊查詢時候不使用它(因為使用時候可能較低效)可以使用自然排序,用{“$natural”:1}來強制mongodb禁用索引。自然排序就是“按照磁碟上的儲存順序返回資料”,這樣mongodb就不會使用索引了。 技巧四、索引覆蓋查詢如果只想返回某些欄位且所有這些欄位都可放在索引中,mong odb可以做索引覆蓋查詢(covered index query),這種查詢不會訪問指標指向的文檔,二是直接用索引的資料返回結果。
例如: db.foo.ensuIndex({x:1, y :1,z:1})現在查詢被索引的欄位,並只要求返回這些欄位,mongodb就沒必要載入整個文檔。db,foo.find({x: ceriteria, y: ceriteria})
這樣的查詢僅僅訪問了索引的資料,而沒有訪問整個集合的資料;技巧五、使用複合索引加快多個查詢查詢只要和索引開頭部分匹配就能利用索引,所以建立索引時要考慮這些查詢依賴的所有欄位。並且根據各個欄位查詢的頻率定義索引欄位順序;技巧六、通過建立分級文檔加快掃描將數組組織有層次話,不僅可以讓其看著更有條理,還可以讓mongodb在偶爾沒有索引時候也能快速查詢。 如果文檔沒有階層的話,mongodb必須遍曆文檔中的每個欄位。合理使用層次可以減少mongodb對欄位的訪問。 
技巧七、AND型查詢要點假設要查詢滿足條件A,B和C的文檔,滿足A的文檔有4萬,滿足B的有9K,滿足C的是200,那麼應該用C and B and A 這樣只需要查詢200條記錄。
這就是說要是已知某個查詢條件更加苛刻,那要將放置在最前面;技巧八:OR型查詢要點OR型查詢與AND查詢恰好相反,匹配最多的查詢語句放在最前面,因為Mongodb每次都要匹配不在結果集中的文檔。







【MongoDB】MongoDB之八大最佳化技巧

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.