MongoDB與MMAPV1相關的資料檔案簡述

chenfeng發表於2018-06-20
每一個資料庫都有一個.ns檔案和有單向遞增的數值副檔名的多個資料檔案。
例如test資料庫,會有test.ns、test.1和test.2等檔案
對於資料庫的每一個新的數值資料檔案,其大小將是前一個數值資料檔案大小的兩倍。檔案大小限制是2GB,
如果該檔案達到了2G,則後續的資料編號檔案也將保持為2GB大小,這一行為會確保小資料庫不會浪費過多的
硬碟空間,為確保一致的效能,MongoDB會預先分配資料檔案,該過程是在後臺進行的,並且在每次填充一個
資料檔案時候啟動。這意味著MongoDB伺服器總是會嘗試為每一個資料庫保留一個額外的空資料檔案,以避免
檔案分配時出現阻塞。
如果想分配小檔案,可以修改storage.mmapv1.smallFiles引數選項。

.ns名稱空間檔案
在資料檔案中,資料空間會被劃分為多個名稱空間,其中名稱空間對應於一個集合或者一個索引。
這些名稱空間的後設資料資訊儲存在.ns檔案裡,在資料目錄裡,將會發現一個名為[dbname].ns的檔案。用於儲存
後設資料的.ns檔案大小是16MB。
集合名稱空間裡包含了一些後設資料:
集合的名稱
集合上的統計資訊(計數和大小等)
第一個範圍資訊
最後一個範圍資訊
刪除列表
索引詳情


範圍指的是一個資料檔案中的一個資料記錄分組,因此一個範圍分組就組成了一個名稱空間的完整資料,範圍使用
硬碟位置來指向實際駐留資料的硬碟位置,它由兩部分構成:檔案編號和偏移量。
檔案編號指定了它指向的資料檔案(0和1等)
偏移量是檔案中的位置,偏移量大小是4KB,因此偏移量的最大值可以被設定為2的31次方-1。
範圍資料結構由以下內容構成:
硬碟上的位置
下一個和上一個範圍的指標
雙連結串列,維護到其指向資料塊的第一個資料記錄和最後一個資料記錄的指標,也就是檔案中的偏移量。


資料記錄結構由以下內容構成:
由於資料記錄結構是範圍雙連結串列的一個元素,因此它會儲存上一個和下一個記錄的資訊
頭資訊具有長度內容
資料塊

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/15498/viewspace-2156368/,如需轉載,請註明出處,否則將追究法律責任。

相關文章