您好,登錄后才能下訂單哦!
本系列文章翻譯自《50 Tips and Tricks for MongoDB Developers》,暫時沒有找到中文版,反正自己最近也在深入學習mongodb,所以正好拿來翻譯一下。一方面加強自己學習的效果,另一方面讓大 家也一起來體驗一下需要我們這些mongodb使用者需要注意的地方。
首先聲明自己的英文水平不是太高,加之有些英文翻譯成中文也找不到合適的詞來表達,所以在文章中可能會出現英文原詞,或者說有些地方的翻譯會有些生 硬,也就是說會出現直譯的地方。翻譯該書的主要目的是為大家學習探討用的,如果有翻譯不精準的地方,或者說有更加精準的翻譯,還請大家指出,我會及時的更 正的,在此先謝過各位了。
Tip#21.Minimize disk access
將訪問磁盤的次數降到最低
從RAM中中訪問數據很快,而從磁盤中訪問數據有點慢。因此,大多數優化技巧的基礎都是最小化訪問磁盤的數量。
模糊匹配
從磁盤中讀取數據和從內存中讀取數據相比要慢100萬倍。
大多數碟式(旋轉式)硬盤驅動器能在10毫秒內訪問到數據,然后從內存中只需要10納秒就可以訪問到數據(這依賴于你使用的是什么樣的硬盤驅動器,什么樣的內存,在這里我們只是粗糙的估算一下)。這意味著磁盤和RAM的訪問時間比例是:1毫秒/1納秒。1毫秒是1百萬個1納秒,因此訪問磁盤是訪問內存個的1百萬倍。
在Linux上通過運行下面的命令,可以測試順序訪問磁盤。
- sudo hdparm -t /dev/hdwhatever
它可能不會返回精確的測量值,就像mongodb使用的是隨機的讀寫,但是還是可以看出你的機器能干什么。
我們能做什么呢?下面是兩個簡單的方案:
使用SSD
SSD(solid state derives固態硬盤)在很多方面要比旋轉式硬盤快很多,但是它們更小,更貴,很難安全的擦除,而且還是不能和從內存讀取的速度相比。不是要阻止你使用SSD,他們可以和mongodb很好的配合,但是它不是萬能的。
增加更多的RAM
增加更多的RAM意味著你減少了對磁盤的訪問。但是,某些時候,你的數據可能不適合進入RAM。
因此,問題變成了:我們如何在磁盤上存儲T字節,甚至是P自己的數據?如何編寫這樣一個,經常訪問的數據已經在內存中,盡可能少的從磁盤中移動數據到內存,應用程序?
如果你訪問數據的方式是實時的、隨即的,你將會須要很多的RAM。但是,大多數應用不是這樣的,訪問近期的數據要比訪問舊的數據次數多,一部分用戶要比其他用戶更活躍,一部分地域要比其他地域用戶多。這樣的應用,應該設計成在內存中保持特定的數據,很少直接訪問磁盤。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。