這篇文章帶大家了解關於mongodb的相關知識,介紹一下MongoDB中的儲存引擎,希望對大家有幫助!
上次我們說到了關於mongodb 的集群,分為主從集群和分片集群,對於分片集群中的分片這裡需要注意如下幾點,一起來回顧一下:
某些分片鍵(分片鍵是集合中每個文件中存在的索引欄位或複合索引欄位)會導致所有的讀取或寫入請求 都操作在單一資料區塊或分片上,這樣就會導致單一分片伺服器負荷過重,那麼自增長的分片鍵容易導致寫的問題【推薦:MongoDB視訊教學】
對於粗粒度的分片鍵,可能會導致許多文件使用相同的分片鍵
這樣的話這些文件就不能分割為多個資料區塊,這就會限制了mongodb 的均勻分佈資料能力
##分片鍵與查詢是沒有關聯的,這樣會造成糟糕的查詢效能
對於以上註意點,咱們做到心中有數,實際工作中遇到類似的問題,就可以嘗試學著處理了今天我們簡單了解一下mongodb 的儲存引擎是個啥
#儲存引擎說到mongodb 的儲存引擎,我們要知道是在mongodb 3.0 的時候引入了可插拔儲存引擎的概念
現在主要有這幾個引擎:#現在不使用MMAPV1 引擎,是因為
WiredTiger 存儲引擎更優,例如對比一下WiredTiger 就有以下優勢:
WiredTigerMMAPV1引擎使用表級鎖,當某個單表上有並發的操作,吞吐就會受到限制
並且 WiredTiger 也
提供壓縮演算法
應用程式請求來到mongodb ,mongodb 做處理,並將結果存入快取中當快取中達到
2 個G的時候,或當60 s
定時器到時間的時候,就會將快取中的資料刷到磁碟中去細心的xdm 就知道,那麼如果現在正好是59 秒,1個多G 的時候,快取中的資料還沒同步到磁碟中,mongodb 就異常掛掉了,那麼mongodb 豈不是會遺失資料?
##journaling buffer
存放mongodb 增刪改指令的緩衝區
journal 檔案 類似於關聯式資料庫中的交易日誌引入Journaling 的目的是:
Journaling 能夠讓mongodb 資料庫因意外故障後快速復原
Journaling 日誌功能######Journaling 的日誌功能,看起來有點像是redis 中的aof 持久化一樣,也只能說是類似######在mongodb 2.4 的時候,就已經是###預設會開啟Journaling日誌功能### 的,我們啟動mongod 實例的時候,服務就會去檢查是否需要恢復資料#########因此就不會有上述mongodb 遺失資料的情況了#######另外這裡我們要知道,journaling 的日誌功能,當mongodb 需要進行寫入操作的時候,也就是增,刪,改的時候,journaling 是會寫日誌的,這會影響效能
但是mongodb 讀取操作的時候,是不會記錄到快取中的,因此也不會記錄到journaling 日誌中,因此讀取操作沒有影響
#今天就到這裡,學習所得,若有偏差,還請斧正
#以上是一文深析MongoDB儲存引擎(附原理圖)的詳細內容。更多資訊請關注PHP中文網其他相關文章!