1. 存儲引擎
1.1 存儲引擎是什么
存儲引擎是位于持久化數(shù)據(jù)(通常是放在磁盤或者內(nèi)存中)和數(shù)據(jù)庫之間的一個操作接口,它負(fù)責(zé)數(shù)據(jù)的存儲和讀取方式。MongoDB數(shù)據(jù)庫通過存儲引擎在磁盤中讀取數(shù)據(jù),而假設(shè)我們的應(yīng)用是ASP.NET MVC,我們可以使用官方的Mongo.Driver驅(qū)動,通過通信協(xié)議(如TCP)向MongoDB數(shù)據(jù)庫發(fā)送各種請求。以下是一個簡單的運行圖示
1.2 MongoDB中的默認(rèn)存儲引擎
自MongoDB 3.2 Release版本起,MongoDB默認(rèn)的存儲引擎就成了WiredTiger。而在之前的版本中,它還是MMAPv1。但由于,ongoDB架構(gòu)支持可插拔的存儲引擎,所以使用中即便要更換也是可以做到的。至于其他的功能比較大家可以參閱官方文檔,如不再是In-Place Update,新增Compression等。
我們可以在開啟mongod服務(wù)時輸入相關(guān)參數(shù)調(diào)整存儲引擎,如mongod --storageEngine MMAPv1|wiredTiger
我們也可以使用db.collections.stats()查看當(dāng)前的引擎名稱
MMAPv1
MMAPv1 提供集合級別鎖(實際上稱為collection-level locking)WiredTiger
WiredTiger 對于寫操作提供文檔級別并發(fā)控制(實際上稱為document-level concurrency),因此,不同的客戶端請求可以在同一時間針對一個集合中的不同文檔記性修改