mongodb 的儲存結構

2021-10-05 11:45:52 字數 1490 閱讀 7990

描述mongodb是如何儲存資料檔案的

解答為何實際使用的檔案系統空間比資料本身大很多

解釋db.stats()命令 datasize, storagesize,filesize的不同含義

日誌檔案

mongodb 缺省會建立3組100m 大小的journal日誌檔案

日誌檔案用來在故障時恢復沒有及時寫入到資料檔案的資料

資料檔案

mongodb 的資料檔案,名稱類似dbname.0, dbname.1,… dbname.n

儲存資料的檔案,檔案建立時預設時32m ,然後按照檔案大小的2倍擴充套件,達到2g時,不再擴大,按照每次2g 新建檔案。

命名檔案

命名檔案記錄資料庫下的集合和索引的資訊,以及集合/索引和磁碟檔案的對應關係,名稱類似dbname.ns預設大小為16m ,可以包含24000個物件(集合+索引)可以通過引數--nssize調整大小為2g (只對新建立的有效果),改變現有的ns大小使用db.repairdatabase()命令調整。

其他臨時檔案和lock檔案等_tmp、mongod.lock

extent

extent是資料檔案內的細粒度劃分,乙個資料檔案會被劃分成多個extent,每個extent會儲存資料索引資料,extent和資料檔案的關係如下:

[外鏈轉存失敗,源站可能有防盜煉機制,建議將儲存下來直接上傳(img-ovrnjg2a-1587883035325)(

record

extent中包含的資料(文件)就是record,乙個record包含文件資料,乙個記錄頭和一部分padding空間,空閒的padding空間用來防止更新時資料的遷移。

[外鏈轉存失敗,源站可能有防盜煉機制,建議將儲存下來直接上傳(img-3cwzczdl-1587883035332)(

資料檔案

儲存在磁碟上的檔案,按照extent擴充套件,最大2g。

下面描述db.stats()命令的size的含義

datasize

最接近實際資料量的值,不包含索引

是所有的record 的統計值,包含頭部和padding空間,刪除文件的時候,這個值會變化

storagesize

所有已經分配的extent的值,刪除文件的時候不會縮小,但空間會釋放,當新資料插入時,會首先使用已經釋放的extent。 需要收縮這個值使用compact命令來進行碎片清理。

filesize

磁碟上檔案的大小,包含所有的資料和索引,表示的是系統上分配出去的所有檔案的大小,包括已經使用的extent(資料和索引),和還沒有分配給extent的空間。

MongoDB之資料儲存結構

1 mysql的資料儲存結構 mysql的每個資料庫都對應存放在乙個與資料庫同名的資料夾中,mysql資料庫檔案包括mysql所建資料庫檔案和mysql所用儲存引擎建立的資料庫檔案。mysql如果使用myisam儲存引擎,資料庫檔案型別就包括.frm myd myi mysql如果使用innodb儲...

mongoDB的儲存機制

在mongodb的資料資料夾中 預設路徑是 data db 由構成資料庫的所有檔案。每乙個資料庫都包含乙個.ns檔案和一些資料檔案,其中數 據檔案會隨著資料量的增加而變多。所以如果有乙個資料庫名字叫做foo,那麼構成foo這個資料庫的檔案就會由 foo.ns,foo.0,foo.1,foo.2等等組...

MongoDB儲存配置

無論資料還是索引都存放在硬碟中。到要使用的時候才交換到記憶體中。對於讀密集型應用,規劃好伺服器大小以保證在記憶體中能支撐整個工作集並且進行複製以得到更高的可用性。如果你伺服器的記憶體 ram 不能夠保證在記憶體中容納工作集,進行分片以從多個複本集群中整合記憶體 ram 使用與部署相同的伺服器硬體建立...