Optimization
如何正確估計我的 RAID 10 磁碟可以提供的平均 I/O 操作數?
磁碟可以承受的每秒平均輸入/輸出操作是調整 MySQL / InnoDB 數據庫的一個非常重要的因素,因為它推動了將臟 InnoDB 緩衝池頁面刷新回磁碟的速度。
有沒有一種方法或公式可以用來估計我的 RAID 10 磁碟陣列可以執行的每秒平均 I/O 操作?
tl; dr 是的,您可以進行粗略且現成的計算,但如果您需要準確性,建議進行基準測試。除了原始磁碟性能之外,還有許多因素會影響 IOP,尤其是 RAID 控制器。
如果您有磁碟的技術規格,確定 IOP 的快速計算是:1 /(平均延遲 + 平均尋軌時間)= 隨機 IOP。
促成因素:
- 平均延遲是請求在驅動器磁頭下方旋轉的磁碟扇區所用的時間。
- 平均尋軌時間是驅動器磁頭在請求的磁碟磁軌上定位自身所需的時間。
- 轉速(以每分鐘轉數表示)不直接用於計算,但會影響上述情況。它也是任何驅動器規格中引用的標題數字。
雖然驅動模型之間存在差異,但您可以將粗略且現成的數字應用於每個常見的旋轉速度。
- 7200 RPM ~75 IOP
- 10K RPM ~125 IOPS
- 15K RPM ~175 IOPS
對於大多數企業級 RAID 控制器,您對常見 RAID 級別 (1/10/5/6) 的讀取性能將大致符合 IOP * 磁碟數。更便宜的控制器可能會處以罰款。然而,寫入性能受所選級別的顯著影響:
- RAID 1 & 10 = IOPS / 2
- RAID 5 = IOPS / 4
- RAID 6 = IOPS / 6
例如,由 10 個 15k 磁碟組成的 RAID 10 陣列等同於:
- (175 * 10) = 1750 IOPS 讀取
- (175 * 10) / 2 = 875 IOPS 寫入
當然,大多數工作負載都是讀取和寫入的混合,因此有必要考慮 r/w 比率來確定所需的容量。