在閱讀斯坦福大學經典教材《數據庫系統實現》時,作者對磁盤讀寫速度的統計分析引發了我的深思。書中指出:機械硬盤每秒約能完成 150 次隨機 I/O,而優秀的哈希算法配合內存查找,每秒可達 40 萬次。這 **近三個數量級的差距**,正是 Memcached、Redis 等內存數據庫誕生的硬件根基,也是互聯網架構廣泛採用內存緩存的根本原因。
每秒最大隨機 I/O 次數 = 1000 ms ÷ 10 ms = 100 次
考慮到 10 ms 是最壞情況(磁頭需移動到最遠磁道 + 等待旋轉半圈),實際平均轉動延遲約 4-6 ms,加上尋道時間,實測值通常在 120-150 IOPS 之間,與書中「150 次/秒」吻合。
1 分鐘 = 60 秒 = 60,000 ms
若單次旋轉 10 ms → 60,000 ÷ 10 = 6,000 RPM
市面常見 7,200 RPM 硬盤,單次旋轉 ≈ 8.33 ms,理論 IOPS ≈ 120,符合預期
| 指標 | 機械硬盤 (HDD) | 內存 (RAM) | 差距 |
|---|---|---|---|
| 隨機讀寫次數/秒 | ~150 IOPS | ~400,000 OPS | ~2,600 倍 |
| 延遲 | ~4-10 ms | ~50-100 ns | ~50,000 倍 |
| 吞吐帶寬 | ~150 MB/s | ~20-50 GB/s | ~200 倍 |
這種 **本質性的硬件差異**,決定了傳統關係型數據庫必須通過 B+ 樹索引、緩存池、預讀等機制來「避開」磁盤隨機讀寫,而內存數據庫則直接利用內存的極致速度。
書中提到的 SSD(固態硬盤)隨機讀寫可達 **20 萬次/秒**,已逼近內存數量級。作者回憶淘寶技術專家余鋒分享:淘寶早期即大規模採用 Flash 存儲解決高併發訪問問題。
「性能優化最終歸結點還是到硬件層面,最好是對硬件多了解。了解計算機硬件的瓶頸在哪裡,就能找到優化的方向。」
這句感悟直擊本質:
iostat、fio 實測 IOPS、延遲、帶寬,用數據說話下一次面對慢查詢、高延遲、吞吐瓶頸時,請先問自己:「這背後的硬件在做什麼?它的極限在哪裡?」