在網上看到一個知識點如下:
對機械硬碟來說,1秒可以完成150次左右的隨機I/O。而結合設計優良的Hash演算法,記憶體查詢可以每秒執行40萬次左右。硬碟的隨機讀寫能力決定了其讀寫的最差效能
===========================
後來我看了史丹佛大學的《資料庫系統實現》一書對硬碟原理的講解,我根據裡面對硬碟的讀寫速度統計我嘗試計算一下是可以得到上面結果:
1秒=1000ms(毫秒)
完成一次硬碟旋轉平均為10ms(這是最慢的情況下),所以一秒可以有1000ms/10ms=100次隨機i/0
因為是最差的情況下才是10ms,所以一秒150次i/0差不多。
確實,對硬碟讀寫資料的速度與對記憶體進行讀寫資料根本不是一個數量級別的。
基於記憶體儲存的資料庫如memcached、redis誕生是基於這個硬體原理而誕生的。網際網路常常使用記憶體快取來達到快速訪問的要求。
硬碟一分鐘的轉速是怎麼算出來的?
1*60秒=60秒*1000ms=60000毫秒
旋轉一次最差的情況下花費10ms,所以60000/10ms = 6000轉/分鐘
由於是最差情況下10ms算。所以常見硬碟上面經常標明為,一分鐘7200轉,這個比較合理。
感嘆:效能優化最終歸結點還是到硬體層面,最好是對硬體多瞭解。瞭解計算機硬體的瓶頸在哪裡,就能找到優化的方向。
現在有種ssd(固體硬碟)讀寫速度接近記憶體的速度了。大概是20萬次每秒。
固體硬碟確實比較貴。16g的需要400元。讓我想起在以前公司的時候,聽淘寶餘鋒來分享時提到flash儲存,其實就是這種東西,固體硬碟中的資料可以定期刷到普通硬碟中去。固體硬碟的儲存晶片是flash(分為FLASH晶片、DRAM晶片)
淘寶使用到固態硬碟作為解決大併發訪問問題的辦法之一。