寫給MongoDB開發(fā)者的50條建議Tip21-創(chuàng)新互聯(lián)
本系列文章翻譯自《50 Tips and Tricks for MongoDB Developers》,暫時沒有找到中文版,反正自己最近也在深入學習mongodb,所以正好拿來翻譯一下。一方面加強自己學習的效果,另一方面讓大 家也一起來體驗一下需要我們這些mongodb使用者需要注意的地方。
首先聲明自己的英文水平不是太高,加之有些英文翻譯成中文也找不到合適的詞來表達,所以在文章中可能會出現(xiàn)英文原詞,或者說有些地方的翻譯會有些生 硬,也就是說會出現(xiàn)直譯的地方。翻譯該書的主要目的是為大家學習探討用的,如果有翻譯不精準的地方,或者說有更加精準的翻譯,還請大家指出,我會及時的更 正的,在此先謝過各位了。
Tip#21.Minimize disk access
將訪問磁盤的次數(shù)降到最低
從RAM中中訪問數(shù)據(jù)很快,而從磁盤中訪問數(shù)據(jù)有點慢。因此,大多數(shù)優(yōu)化技巧的基礎(chǔ)都是最小化訪問磁盤的數(shù)量。
模糊匹配
從磁盤中讀取數(shù)據(jù)和從內(nèi)存中讀取數(shù)據(jù)相比要慢100萬倍。
大多數(shù)碟式(旋轉(zhuǎn)式)硬盤驅(qū)動器能在10毫秒內(nèi)訪問到數(shù)據(jù),然后從內(nèi)存中只需要10納秒就可以訪問到數(shù)據(jù)(這依賴于你使用的是什么樣的硬盤驅(qū)動器,什么樣的內(nèi)存,在這里我們只是粗糙的估算一下)。這意味著磁盤和RAM的訪問時間比例是:1毫秒/1納秒。1毫秒是1百萬個1納秒,因此訪問磁盤是訪問內(nèi)存?zhèn)€的1百萬倍。
在Linux上通過運行下面的命令,可以測試順序訪問磁盤。
- sudo hdparm -t /dev/hdwhatever
它可能不會返回精確的測量值,就像mongodb使用的是隨機的讀寫,但是還是可以看出你的機器能干什么。
我們能做什么呢?下面是兩個簡單的方案:
使用SSD
SSD(solid state derives固態(tài)硬盤)在很多方面要比旋轉(zhuǎn)式硬盤快很多,但是它們更小,更貴,很難安全的擦除,而且還是不能和從內(nèi)存讀取的速度相比。不是要阻止你使用SSD,他們可以和mongodb很好的配合,但是它不是萬能的。
增加更多的RAM
增加更多的RAM意味著你減少了對磁盤的訪問。但是,某些時候,你的數(shù)據(jù)可能不適合進入RAM。
因此,問題變成了:我們?nèi)绾卧诖疟P上存儲T字節(jié),甚至是P自己的數(shù)據(jù)?如何編寫這樣一個,經(jīng)常訪問的數(shù)據(jù)已經(jīng)在內(nèi)存中,盡可能少的從磁盤中移動數(shù)據(jù)到內(nèi)存,應(yīng)用程序?
如果你訪問數(shù)據(jù)的方式是實時的、隨即的,你將會須要很多的RAM。但是,大多數(shù)應(yīng)用不是這樣的,訪問近期的數(shù)據(jù)要比訪問舊的數(shù)據(jù)次數(shù)多,一部分用戶要比其他用戶更活躍,一部分地域要比其他地域用戶多。這樣的應(yīng)用,應(yīng)該設(shè)計成在內(nèi)存中保持特定的數(shù)據(jù),很少直接訪問磁盤。
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。
分享文章:寫給MongoDB開發(fā)者的50條建議Tip21-創(chuàng)新互聯(lián)
URL鏈接:http://www.xueling.net.cn/article/pepsh.html