[mongodb] MMAP 和wiredTiger 的比較

來源:互聯網
上載者:User

標籤:lib   儲存引擎   命令   返回   git   資料檔案   技術分享   磁碟   瓶頸   

  mongodb 現在有兩款儲存引擎  MMAPv1 和 WireTiger,當然了除了這兩款儲存引擎還有其他的儲存引擎了。

如:

  • 記憶體引擎:現在的mongodb 版本中已經有了,主要的cache 服務,它主要是做單元測試的。
  • mongo-rocks:是一個key-value 的引擎被作為一個混合層為Facebook的RocksDB
  • Fusion-io: 這個儲存引擎是被SanDisk建立,他是儘可能的繞過作業系統的檔案層直接寫到存放裝置。
  • TokuMX:這個儲存系統被 Percona 建立,使用了分形樹索引代替了B-tree樹索引。
  • /dev/null:這個儲存引擎把你所有寫的和讀的每一件事都返回空的結果,這聽起來是愚蠢的,但是在一些情況下是十分有用的,例如,在與資料庫無關的情況下,在你的應用程式中去找一些效能瓶頸的時候。

MMAPv1

  MMAPv1之所以被命名,是因為Linux 中的命令mmap() 這個命令的意思是對應檔到虛擬記憶體並且允許對一些用例進行單個的最佳化,例如,當你有一個大的檔案,但是你不需要去讀整個檔案,你只需要讀取器中的一部分,mmap()是十分快的比一個read(),因為read() 是把整個檔案讀到記憶體中。

  MMAP1有一個collection層級的鎖,但是沒有document 層級的鎖,這就造成不能同時有兩個進程對同一個collection 進行寫的操作。因此,針對同一個collection的寫操作,必須要等到前一個操作完成才能進行下一個寫的操作。MMAP這個collection 層級的鎖事必要的,因為MMAP的索引涉及多個document ,如果這些索引不能同時的被更新,那麼這些索引將是不穩定的。

WiredTiger

  MMAP使用B-tree樹去儲存索引,WiredTiger也使用B-trees ,但是支援LSM樹image above was adapted from here)。

  LSM 樹針對需要去有大量的隨機的插入的工作負載的,當你的資料比cahce的容量大並且背景維護經費在可以接受的範圍的的情況是有利的。

  在WiredTiger引擎中,如果一個元素的document 需要被更新,一整個新的document將被全部寫到磁碟中,並且把這箇舊的document移除。

  WiredTiger 提供了document-level-concurrency,這意味著兩個寫的操作將不影響相同的document,如果影響,一個操作將被返回重新執行。如果返回執行是十分少的那麼這個是一個非常不錯的效能最佳化。

  還有一個WiredTiger特有的,提供了一個在檔案系統中壓縮資料和索引的功能,他支援快壓和zlib 兩種運算,預設情況下是有用快壓,和zlib相比他是用了少量的cpu但是它有低 的壓縮效率。

Benchmarks

  當WiredTiger為mongodb服務的時候,他被公布在寫操作方面,效能將比之前快7-10 倍,並且壓縮了80%的檔案系統,這是一個大的改善,下面是多線程的輸送量

 

 Conclusion 

  如果你的app是讀的權重大,使用MMAP,如果寫的大,使用WiredTiger。

  一個有趣的問題是可以建立一個混合引擎的複製集。在複製集中,你可以給一個node配置WiredTiger去接受一個大量寫的資料負載,再用另外一個node 配置MMAP引擎去被一些讀資料的服務使用,複製集會自動主庫和其他庫之間的資料,她們基礎的儲存引擎是獨立的。

  如果你的資料檔案使用MMAP引擎建立的,你將需要建立一個新的資料庫,如果你需要用一個WiredTirger node去運行,他不能開啟資料檔案,這倒轉過來是一樣的,雖然她們使用了不同的方法儲存資料,你不能重新使用相同的檔案,但是在複製集中,資料和主庫進行交換是沒有問題的

 

[mongodb] MMAP 和wiredTiger 的比較

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.