在談這倆概念前、先來說說 大i/o vs. 小i/o
通常、我們把<=16kb的i/o認為是小i/o、而>=32kb的i/o認為是大i/o
了解i/o的大小、影響到後期對快取、raid型別、lun的一些屬性的調優
當前大多數資料庫使用的都是傳統的機械磁碟
因此、整個系統設計要盡可能順序i/o
避免昂貴的尋道時間和旋轉延遲的開銷
隨機小i/o消耗比順序大i/o更多的處理資源
隨機小i/o更在意系統處理i/o的數量、即iops、比如、oltp
而順序大i/o則更在意頻寬、即mb/s、比如、olap
因此、如果系統承載了多種不同的應用
必須了解它們各自的需求、是對iops有要求、還是對頻寬有要求
傳統機械磁碟最大的問題在於讀寫磁頭
讀寫磁頭的存在可以讓磁碟既能順序i/o、也可隨機i/o
但是、隨機i/o需要花費昂貴的磁頭旋轉和定位來查詢
因此、順序io訪問的速度遠遠快於隨機io
資料庫的很多設計也都是盡量充分利用順序io、比如oracle redo log寫便是順序io
如果、資料庫伺服器同時使用順序和隨機i/o、隨機i/o從快取中受益最多
原因有 3 :
① 順序i/o一般只需掃瞄一次資料、所以、快取對它用處不大
② 順序i/o比隨機i/o快
③ 隨機i/o通常只要查詢特定的行、但i/o的粒度是頁級的、其中大部分是浪費的
而、順序i/o所讀取的資料、通常發生在想要的資料塊上的所有行
更加符合成本效益
所以、快取隨機i/o可以節省更多的workload
傳統的資料庫架構對隨機io幾乎沒有還手之力、隨機io幾乎令所有dba談虎色變
而聰明如mysql innodb 則利用事務日誌把隨機i/o轉成順序i/o
竊以為、如果能負擔得起、增加記憶體是解決隨機i/o最好的辦法
從資料庫層面理解 隨機 I O 順序 I O
在 談這倆概念前 先來說說 大i o vs.小i o 通常 我們把 16kb的i o認為是小i o 而 32kb的i o認為是大i o 了解i o的大小 影響到後期對快取 raid型別 lun的一些屬性的調優 當前大多數資料庫使用的都是傳統的機械磁碟 因此 整個系統設計要盡可能順序i o 避免昂貴的...
關於順序磁碟IO比記憶體隨機IO快的討論
我們從圖中明顯可以看某效能測試的結果表明普通機械磁碟的順序i o效能指標是53.2m values s,ssd的順序i o效能指標是42.2m values s,而記憶體的隨機i o效能指標是36.7m values s。雖然圖中沒有給出values的具體含義,但既然使用了相同的單位,應該是它們是可...
實際測試內存在順序IO和隨機IO時的訪問延時差異
在 記憶體隨機也比順序訪問慢,帶你深入理解記憶體io過程 一文中,我們理解了記憶體io的內部實現過程,知道了記憶體的隨機io比順序io要慢,並對延遲時間進行了大概的估算。那麼我們今天來用 的方式來時間一下,看看在我們的專案工程中,記憶體訪問的在不同的訪問場景下延時究竟是個什麼表現。測試原理就是定義乙...