大部分程序員都搞錯了,硬盤真的很慢么?
緩存是每個程序員所熟知的,相信大家對緩存都已經(jīng)不陌生了,緩存使用傳輸更快的介質(zhì)來存儲更加頻繁讀寫的數(shù)據(jù)。在程序員面試中,我們常常會這樣回答,因為硬盤的讀寫速度太慢,事實真的是如此么?
雖然現(xiàn)在已經(jīng)又SSD硬盤,但是由于SSD硬盤價格昂貴,在服務器領域,機械硬盤還是橫行霸道,所以,今天我們討論的,是機械硬盤。這十幾年來,硬盤的容量已經(jīng)翻了好幾番,我記得我讀書那會,能夠配一個128G的硬盤已經(jīng)非常奢侈了,而今天,家用的電腦基本都是TB級別起步的了。但是硬盤的讀寫速度并沒有多大的提升,這很大程度是與硬盤的結構息息相關的。在一個機械硬盤里面,要完成數(shù)據(jù)讀寫,需要經(jīng)歷這三步:尋道、旋轉(zhuǎn)、數(shù)據(jù)讀取。
尋道
我們的機械硬盤,就像一個大圓餅一樣,數(shù)據(jù)是一圈一圈地存在,讀取數(shù)據(jù)地時候,需要將探頭旋轉(zhuǎn)到對應的磁道,這是一個機械運動的過程,盡管現(xiàn)在的探頭越來越精致,速度越來越快,學過物理的同學都知道,從靜止的物體運動起來跟加速度這些都有關系,考慮到探頭的耐用性,無法太快,現(xiàn)在的大部分磁盤尋道時間都要花2ms到15ms。
旋轉(zhuǎn)
當我們把探頭調(diào)整到對應磁道之后,還需要去對應的地方去獲取數(shù)據(jù)。我們的每一個磁道的數(shù)據(jù)都是一個大圓圈,所以需要旋轉(zhuǎn)硬盤到合適的位置。旋轉(zhuǎn)的耗時取決于旋轉(zhuǎn)的轉(zhuǎn)速,這就是市面上我們經(jīng)??吹降拇疟P轉(zhuǎn)速參數(shù),5400轉(zhuǎn)或者7200轉(zhuǎn)甚至更高,一般5400轉(zhuǎn)的硬盤,也需要4ms左右才能旋轉(zhuǎn)到對應的扇區(qū)。

數(shù)據(jù)讀取
數(shù)據(jù)讀取其實非常的快,快到可以忽略不記。
隨機讀寫與順序讀寫
綜上所述,一個機械硬盤,如果要讀寫的數(shù)據(jù)不在對應的磁道上,那么最少也要花費5ms去跑到對應的地址,所以,我們常說的,機械硬盤速度慢,更多的是特指機械硬盤在隨機讀寫的速度慢。為了更好的利用磁盤,完成更大的吞吐,在很多大型的系統(tǒng),都會使用追加寫來減少磁盤的尋道跟旋轉(zhuǎn)次數(shù)。例如由領英著名的消息隊列卡夫卡,或者谷歌開源的存儲系統(tǒng)LevelDB,都是使用追加寫數(shù)據(jù)來達到更大的性能。
事實上,硬盤的順序讀寫速度非常地快,我們常說的慢,指的是隨機讀寫,你學到了嗎?歡迎大家關注我,共同學習,共同進步。大家的支持是我繼續(xù)嘮嗑的動力。