一、MongoDB的存儲引擎概述 存儲引擎(Storage Engine)是MongoDB的核心組件,負責管理數據如何存儲在硬碟(Disk)和記憶體(Memory)上。從MongoDB 3.2 版本開始,MongoDB 支持多數據存儲引擎(Storage Engine),MongoDB支持的存儲引擎有 ...
一、MongoDB的存儲引擎概述
存儲引擎(Storage Engine)是MongoDB的核心組件,負責管理數據如何存儲在硬碟(Disk)和記憶體(Memory)上。從MongoDB 3.2 版本開始,MongoDB 支持多數據存儲引擎(Storage Engine),MongoDB支持的存儲引擎有:WiredTiger,MMAPv1和In-Memory。從MongoDB 3.2 版本開始,WiredTiger成為MongDB預設的Storage Engine,用於將數據持久化存儲到硬碟文件中。目前,MongoDB支持以下三種存儲引擎:
- WiredTiger:WiredTiger提供文檔級別(Document-Level)的併發控制,檢查點(CheckPoint),數據壓縮和本地數據加密( Native Encryption)等功能。從MongoDB 3.2 版本開始,WiredTiger成為MongDB預設的Storage Engine。
- MMAPv1:在MongoDB 3.2版本前,MMAPv1是預設的數據存儲引擎。
- In-Memory Storage Engine:In-Memory存儲引擎將數據存儲在記憶體中,除了少量的元數據和診斷(Diagnostic)日誌,In-Memory存儲引擎不會維護任何存儲在硬碟上的數據(On-Disk Data),避免Disk的IO操作,減少數據查詢的延遲。
二、In-Memory Storage Engine
In-Memory存儲引擎將數據存儲在記憶體中,除了少量的元數據和診斷(Diagnostic)日誌,In-Memory存儲引擎不會維護任何存儲在硬碟上的數據(On-Disk Data),避免Disk的IO操作,減少數據查詢的延遲。
使用下麵的語句指定In-Memory存儲引擎:
mongod --storageEngine inMemory --dbpath <path>
說明:
- 關於--dbpath參數:雖然In-Memory 存儲引擎不會向文件系統寫入數據,但是它需要使用 --dbpath 維護少量的元數據和診斷(Diagnostic )日誌。
- 關於記憶體的使用:--inMemorySizeGB 設置占用的記憶體數量,預設值是:50% of RAM-1GB。指定In-Memory 存儲引擎使用的記憶體數據量,單位是GB。
- 關於持久化:由於In-Memory 存儲引擎不會持久化存儲數據,只將數據存儲在記憶體中,讀寫操作直接在記憶體中完成,不會將數據寫入到Disk文件中,因此,不需要單獨的日誌文件,不存在記錄日誌和等待數據持久化的問題,當MongoDB實例關機或系統異常終止時,所有存儲在記憶體中的數據都將會丟失。
啟動過程如下圖所示: