1. 存儲(chǔ)引擎

1.1 存儲(chǔ)引擎是什么


存儲(chǔ)引擎是位于持久化數(shù)據(jù)(通常是放在磁盤(pán)或者內(nèi)存中)和數(shù)據(jù)庫(kù)之間的一個(gè)操作接口,它負(fù)責(zé)數(shù)據(jù)的存儲(chǔ)和讀取方式。MongoDB數(shù)據(jù)庫(kù)通過(guò)存儲(chǔ)引擎在磁盤(pán)中讀取數(shù)據(jù),而假設(shè)我們的應(yīng)用是ASP.NET MVC,我們可以使用官方的Mongo.Driver驅(qū)動(dòng),通過(guò)通信協(xié)議(如TCP)向MongoDB數(shù)據(jù)庫(kù)發(fā)送各種請(qǐng)求。以下是一個(gè)簡(jiǎn)單的運(yùn)行圖示

1.2 MongoDB中的默認(rèn)存儲(chǔ)引擎


自MongoDB 3.2 Release版本起,MongoDB默認(rèn)的存儲(chǔ)引擎就成了WiredTiger。而在之前的版本中,它還是MMAPv1。但由于,ongoDB架構(gòu)支持可插拔的存儲(chǔ)引擎,所以使用中即便要更換也是可以做到的。至于其他的功能比較大家可以參閱官方文檔,如不再是In-Place Update,新增Compression等。

我們可以在開(kāi)啟mongod服務(wù)時(shí)輸入相關(guān)參數(shù)調(diào)整存儲(chǔ)引擎,如mongod --storageEngine MMAPv1|wiredTiger
我們也可以使用db.collections.stats()查看當(dāng)前的引擎名稱

  • MMAPv1
    MMAPv1 提供集合級(jí)別鎖(實(shí)際上稱為collection-level locking)

  • WiredTiger
    WiredTiger 對(duì)于寫(xiě)操作提供文檔級(jí)別并發(fā)控制(實(shí)際上稱為document-level concurrency),因此,不同的客戶端請(qǐng)求可以在同一時(shí)間針對(duì)一個(gè)集合中的不同文檔記性修改

延伸閱讀

學(xué)習(xí)是年輕人改變自己的最好方式-Java培訓(xùn),做最負(fù)責(zé)任的教育,學(xué)習(xí)改變命運(yùn),軟件學(xué)習(xí),再就業(yè),大學(xué)生如何就業(yè),幫大學(xué)生找到好工作,lphotoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動(dòng)軟件開(kāi)發(fā)培訓(xùn),網(wǎng)站設(shè)計(jì)培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)學(xué)習(xí)是年輕人改變自己的最好方式