您好,登錄后才能下訂單哦!
本系列文章翻譯自《50 Tips and Tricks for MongoDB Developers》,暫時沒有找到中文版,反正自己最近也在深入學(xué)習(xí)mongodb,所以正好拿來翻譯一下。一方面加強(qiáng)自己學(xué)習(xí)的效果,另一方面讓大 家也一起來體驗(yàn)一下需要我們這些mongodb使用者需要注意的地方。
首先聲明自己的英文水平不是太高,加之有些英文翻譯成中文也找不到合適的詞來表達(dá),所以在文章中可能會出現(xiàn)英文原詞,或者說有些地方的翻譯會有些生 硬,也就是說會出現(xiàn)直譯的地方。翻譯該書的主要目的是為大家學(xué)習(xí)探討用的,如果有翻譯不精準(zhǔn)的地方,或者說有更加精準(zhǔn)的翻譯,還請大家指出,我會及時的更 正的,在此先謝過各位了。
Tip#21.Minimize disk access
將訪問磁盤的次數(shù)降到最低
從RAM中中訪問數(shù)據(jù)很快,而從磁盤中訪問數(shù)據(jù)有點(diǎn)慢。因此,大多數(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上通過運(yùn)行下面的命令,可以測試順序訪問磁盤。
- sudo hdparm -t /dev/hdwhatever
它可能不會返回精確的測量值,就像mongodb使用的是隨機(jī)的讀寫,但是還是可以看出你的機(jī)器能干什么。
我們能做什么呢?下面是兩個簡單的方案:
使用SSD
SSD(solid state derives固態(tài)硬盤)在很多方面要比旋轉(zhuǎn)式硬盤快很多,但是它們更小,更貴,很難安全的擦除,而且還是不能和從內(nèi)存讀取的速度相比。不是要阻止你使用SSD,他們可以和mongodb很好的配合,但是它不是萬能的。
增加更多的RAM
增加更多的RAM意味著你減少了對磁盤的訪問。但是,某些時候,你的數(shù)據(jù)可能不適合進(jìn)入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ù)的方式是實(shí)時的、隨即的,你將會須要很多的RAM。但是,大多數(shù)應(yīng)用不是這樣的,訪問近期的數(shù)據(jù)要比訪問舊的數(shù)據(jù)次數(shù)多,一部分用戶要比其他用戶更活躍,一部分地域要比其他地域用戶多。這樣的應(yīng)用,應(yīng)該設(shè)計(jì)成在內(nèi)存中保持特定的數(shù)據(jù),很少直接訪問磁盤。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。