下載吧 - 綠色安全的游戲和軟件下載中心

          軟件下載吧

          當前位置:軟件下載吧 > 數據庫 > DB2 > 深入了解MongoDB是如何存儲數據的

          深入了解MongoDB是如何存儲數據的

          時間:2024-03-26 14:42作者:下載吧人氣:38

          前言

          本文主要介紹了關于MongoDB存儲數據的相關內容,分享出來供大家參考學習,下面來一起看看詳細的介紹:

          想要深入了解MongoDB如何存儲數據之前,有一個概念必須清楚,那就是Memeory-Mapped Files。

          Memeory-Mapped Files

          下圖展示了數據庫是如何跟底層系統打交道的。

          • 內存映射文件是OS通過mmap在內存中創建一個數據文件,這樣就把文件映射到一個虛擬內存的區域。
          • 虛擬內存對于進程來說,是一個物理內存的抽象,尋址空間大小為2^64
          • 操作系統通過mmap來把進程所需的所有數據映射到這個地址空間(紅線),然后再把當前需要處理的數據映射到物理內存(灰線)
          • 當進程訪問某個數據時,如果數據不在虛擬內存里,觸發page fault,然后OS從硬盤里把數據加載進虛擬內存和物理內存
          • 如果物理內存滿了,觸發swap-out操作,這時有些數據就需要寫回磁盤,如果是純粹的內存數據,寫回swap分區,如果不是就寫回磁盤。

          深入了解MongoDB是如何存儲數據的

          MongoDB的存儲模型

          深入了解MongoDB是如何存儲數據的

          • 有了內存映射文件,要訪問的數據就好像都在內存里面,簡單化了MongoDB訪問和修改數據的邏輯
          • MongoDB讀寫都只是和虛擬內存打交道,剩下都交給OS打理
          • 虛擬內存大小=所有文件大小+其他一些開銷(連接,堆棧)
          • 如果journal開啟,虛擬內存大小差不多翻番
          • 使用MMF的好處1:不用自己管理內存和磁盤調度2:LRU策略3:重啟過程中,Cache依然在。
          • 使用MMF的壞處1:RAM使用會受磁盤碎片的影響,高預讀也會影響2:無法自己優化調度算法,只能使用LRU

          深入了解MongoDB是如何存儲數據的

          深入了解MongoDB是如何存儲數據的

          深入了解MongoDB是如何存儲數據的

          • 磁盤上的文件是有extent構成,分配集合空間的時候也是以extent為單位進行分配的
          • 一個集合有一個或者多個etent
          • ns文件里面命名空間記錄指向那個集合的第一個extent

          數據文件與空間分配

          當創建數據庫時(其實MongoDB沒有顯式創建數據庫的方法,在向數據庫中的集合寫入數據時會自動創建該數據庫),MongoDB會在磁盤上分配一組數據文件,所有集合,索引和數據庫的其他元數據都保存在這些文件里。數據文件被放在啟動時指定的dbpath里,默認放入/data/db下面。典型的一個文件組織結構如下:

          $ cat /data/db
          $ ls -al
          -rw——- 1 root root 16777216 09-18 00:54 local.ns
          -rw——- 1 root root 67108864 09-18 00:54 local.0
          -rw——- 1 root root 2146435072 09-18 00:55 local.1
          -rw——- 1 root root 2146435072 09-18 00:56 local.2
          -rw——- 1 root root 2146435072 09-18 00:57 local.3
          -rw——- 1 root root 2146435072 09-18 00:58 local.4
          -rw——- 1 root root 2146435072 09-18 00:59 local.5
          -rw——- 1 root root 2146435072 09-18 01:01 local.6
          -rw——- 1 root root 2146435072 09-18 01:02 local.7
          -rw——- 1 root root 2146435072 09-18 01:03 local.8
          -rw——- 1 root root 2146435072 09-18 01:04 local.9
          -rw——- 1 root root 2146435072 09-18 01:05 local.10
          -rw——- 1 root root 16777216 09-18 01:06 test.ns
          -rw——- 1 root root 67108864 09-18 01:06 test.0
          -rw——- 1 root root 134217728 09-18 01:06 test.1
          -rw——- 1 root root 268435456 09-18 01:06 test.2
          -rw——- 1 root root 536870912 09-18 01:06 test.3
          -rw——- 1 root root 1073741824 09-18 01:07 test.4
          -rw——- 1 root root 2146435072 09-18 01:07 test.5
          -rw——- 1 root root 2146435072 09-18 01:09 test.6
          -rw——- 1 root root 2146435072 09-18 01:11 test.7
          -rw——- 1 root root 2146435072 09-18 01:13 test.8

          -rwxr-xr-x 1 root root 6 09-18 13:54 mongod.lock
          drwxr-xr-x 2 root root 4096 11-13 18:39 journal
          drwxr-xr-x 2 root root 4096 11-13 19:02 _tmp

          標簽深入,了解,MongoDB,如何,存儲,數據

          相關下載

          查看所有評論+

          網友評論

          網友
          您的評論需要經過審核才能顯示

          熱門閱覽

          最新排行

          公眾號

          主站蜘蛛池模板: av在线亚洲欧洲日产一区二区| 国产一区二区三区福利| 亚洲视频一区在线观看| 亚洲乱码av中文一区二区| 日本精品3d动漫一区二区| 无码人妻精品一区二区| 手机看片福利一区二区三区| 精品视频午夜一区二区| 成人H动漫精品一区二区| 精品一区二区三区在线播放视频| 日本不卡一区二区三区视频| 亚洲国产精品一区二区九九| 国产一区二区三区四| 精品无码国产AV一区二区三区| 久久综合亚洲色一区二区三区| 色婷婷AV一区二区三区浪潮| 亚洲AV成人精品日韩一区18p| 日韩有码一区二区| 波多野结衣在线观看一区二区三区| 蜜芽亚洲av无码一区二区三区| 亚洲中文字幕乱码一区| 国产99视频精品一区| 亚洲国产系列一区二区三区| 波多野结衣一区视频在线| 亚洲综合av一区二区三区不卡| 国产一区二区三区影院| 亚洲熟妇AV一区二区三区浪潮| 精品熟人妻一区二区三区四区不卡 | 国产综合精品一区二区| 日韩成人一区ftp在线播放| 伊人久久精品无码麻豆一区| 亚洲AV综合色区无码一区爱AV| 国产91一区二区在线播放不卡| 国产产一区二区三区久久毛片国语 | 久久久无码精品人妻一区| 亚洲AV无码片一区二区三区| 日本一区二区三区四区视频| 亚洲.国产.欧美一区二区三区| 亚洲a∨无码一区二区| 日韩在线一区二区| 日韩免费视频一区|