今天看到一篇文章說磁碟理論最大IOPS為200左右,我有兩個疑問:
1。MYSQL的IOPS取決於磁碟的IOPS,肯定比磁碟的IOPS小?
2。如果MYSQL的IOPS比磁碟的IOPS小,那一臺伺服器單位時間內處理的請求數也是200左右嗎(預估一個請求會讀取一次資料)?
計算磁碟理論最大IOPS的方法如下:
理論上可以計算出磁碟的平均最大IOPS,即IOPS = 1000 ms/ (Tseek + Troatation),忽略資料傳輸時間。
假設磁碟平均物理尋道時間為3ms, 磁碟轉速為7200,10K,15K rpm,則磁碟IOPS理論最大值分別為,
IOPS = 1000 / (3 + 60000/7200/2) = 140
IOPS = 1000 / (3 + 60000/10000/2) = 167
IOPS = 1000 / (3 + 60000/15000/2) = 200
回答1:作者:Feng Guangpu
連結:https://www。zhihu。com/question/28111947/answer/39459120
著作權歸作者所有。商業轉載請聯絡作者獲得授權,非商業轉載請註明出處。
1。肯定不會超過磁碟的IOPS
2。不能簡單的IOPS = 1000 ms/ (Tseek + Troatation)計算,因為如果是順序寫Tseek就可以省了,MySQL的IOPS可以透過系統工具觀察(iostat -h),或者透過單位時間內的fsync次數來計算:
mysql> show status like ‘%sync%’;
+————————————————+————-+
| Variable_name | Value |
+————————————————+————-+
| Innodb_data_fsyncs | 27428 |
| Innodb_data_pending_fsyncs | 0 |
| Innodb_os_log_fsyncs | 5172 |
| Innodb_os_log_pending_fsyncs | 0 |
+————————————————+————-+
4 rows in set (0。00 sec)
這裡這有innodb的統計資訊,binlog的沒有統計在內,因此只能粗略計算
回答2:
計算方式從表面上看是對的,但是你是指單盤IOPS嗎?要知道資料庫使用塊狀儲存的話,還取決於:
1、你做的RAID方式,
2、你的儲存頭效能和背板的頻寬,
3、你採用的儲存壓縮模式,
4、你採用的CACHE的尺寸演算法等等,
這些帶沒有合計伺服器對IO的處理能力,所有這些都可以成為最終處理能力的決定因素,如何只從磁碟來說呢?!如果單從一個環節說,那設計最高處理能力肯定是瓶頸,但是這樣的說法在現實中並沒有多大的實際意義。
問2:伺服器是MYSQL的容器,但是伺服器還涉及叢集,如果單機你可以說伺服器的極限也就是MYSQL的極限,叢集就不能了,叢集在節點數是線性的,再往下就會變成節點增長處理能力增加幅度越來越小,超過一定數會變成下降。(由於MYSQL的叢集是SHARE ANYTHING方式,ORACLE RAC也是這樣的)
回答3:
計算方式從表面上看是對的,但是你是指單盤IOPS嗎?要知道資料庫使用塊狀儲存的話,還取決於:
1、你做的RAID方式,
2、你的儲存頭效能和背板的頻寬,
3、你採用的儲存壓縮模式,
4、你採用的CACHE的尺寸演算法等等,
這些帶沒有合計伺服器對IO的處理能力,所有這些都可以成為最終處理能力的決定因素,如何只從磁碟來說呢?!如果單從一個環節說,那設計最高處理能力肯定是瓶頸,但是這樣的說法在現實中並沒有多大的實際意義。
問2:伺服器是MYSQL的容器,但是伺服器還涉及叢集,如果單機你可以說伺服器的極限也就是MYSQL的極限,叢集就不能了,叢集在節點數是線性的,再往下就會變成節點增長處理能力增加幅度越來越小,超過一定數會變成下降。(由於MYSQL的叢集是SHARE ANYTHING方式,ORACLE RAC也是這樣的)
回答4:
從硬體角度,一般伺服器本地硬碟都是2個以上,透過陣列卡來組成RAID。這樣形成的邏輯硬碟效能就會成倍提升。更別提陣列卡還有快取記憶體等效能增強元件。還可以採購專業儲存,進一步提升硬碟元件效能,提供各種快照,複製等企業級功能。最近更是有全快閃記憶體陣列,那IOPS都是百萬級別。