從資料庫層面理解:隨機 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
避免昂貴的尋道時間和旋轉延遲的開銷
隨機小I/O消耗比順序大I/O更多的處理資源
隨機小I/O更在意系統處理I/O的數量、即IOPS、比如、OLTP
而順序大I/O則更在意頻寬、即MB/s、比如、OLAP
因此、如果系統承載了多種不同的應用
必須瞭解它們各自的需求、是對IOPS有要求、還是對頻寬有要求
原因有 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最好的辦法
原文: http://blog.itpub.net/26515977/viewspace-1208132/
通常、我們把 <=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
原因有 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最好的辦法
原文: http://blog.itpub.net/26515977/viewspace-1208132/
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29754888/viewspace-1629657/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 從順序隨機I/O原理來討論MYSQL MRR NLJ BNL BKA隨機MySql
- 計算機I/O與I/O模型計算機模型
- Veritas Quick I/O and Cached Quick I/OUI
- 理解I/O Completion Port
- I/O阻塞與同步理解
- I/O埠和I/O記憶體記憶體
- 配置資料庫非同步I/O引數資料庫非同步
- 深入理解Java I/O模型Java模型
- Java I/OJava
- Java I/O模型及其底層原理Java模型
- 【轉】Oracle資料庫優化之資料庫磁碟I/OOracle資料庫優化
- 資料傳輸控制方式(i/o)
- 深入理解 python 非同步 i/o 庫 —— asyncioPython非同步
- Java入門學習-理解I/OJava
- Java I/O底層是如何工作的?Java
- Java(8)I/OJava
- 【java】I/O流Java
- Java I/O流Java
- 檔案I/O
- I/O基礎
- java的I/OJava
- c++ I/OC++
- 從網路I/O模型到Netty,先深入瞭解下I/O多路複用模型Netty
- 從 I/O 模型到 Netty(二)模型Netty
- 從 I/O 模型到 Netty(一)模型Netty
- 從 I/O 模型到 Netty(三)模型Netty
- Python教程:精簡概述I/O模型與I/O操作Python模型
- Direct I/O (DIO) and Concurrent I/O (CIO) on AIX 5LAI
- goldengate extract abended unable to queue I/O, I/O beyond file sizeGo
- 紹Oracle資料庫的最佳化之資料庫磁碟I/OOracle資料庫
- 【雜談】Java I/O的底層實現Java
- WARNING:Could not increase the asynch I/O limit to 164 for SQL direct I/OMITSQL
- 【面試】I/O 複用面試
- Java 非同步 I/OJava非同步
- 網路I/O模型模型
- 系統級 I/O
- JAVA I/O系統Java
- GDAL並行I/O並行