磁碟io操作

2021-10-21 10:18:42 字數 1467 閱讀 1855

現在市面上的磁碟安裝轉速來說有5400、7200、10000、15000轉/分,這裡只討論3.5英吋的硬碟。

iops和頻寬是硬碟的主要引數之一,那這些硬碟的iops和頻寬都是多少呢?我們不考慮實際情況的計算一下:

iops(io per second)是硬碟最重要的引數之一,儲存系統一直在優化的乙個引數。那麼不同的硬碟iops是多少?怎麼計算呢?

先寫結果

5400 rpm的硬碟iops=

7200 rpm的硬碟iops=80

10000 rpm的硬碟iops=147

15000 rpm的硬碟iops=199

*以上資料為理論計算值,理論很豐滿,現實很骨感。

如何計算的呢?我們以10000 rpm的硬碟為例進行說明

磁碟在接收到乙個io請求的時候需要3步來完成:

1.將磁頭轉到相應的磁軌=定址時間

我們沒有計算定址時間的方法,只有原廠商提供的資料,hgst的huc101890cs420x提供了seek time約為3.8ms

2.等待相應的扇區轉到磁頭下方開始讀取=潛伏時間latency time。

最好的情況是磁頭轉到相應的磁軌,扇區正好在轉到磁頭下方,此時旋轉延時最小為0ms

最差的情況是磁頭轉到相應的磁軌,扇區剛轉過磁頭下方,此時旋轉延時最大,為60000ms/10000轉=6ms

兩者取平均值為3ms

3.資料傳送時間

1個4k的檔案所需的資料傳輸時間=4k / 資料傳輸率

我們參考原廠商的huc101890cs420x硬碟的資料傳輸率sustained transfer rate (mb/s, typical)為146 to 247,在這裡我們取200mb/s

則得出4k檔案的傳輸時間=4k / 200mb/s=0.02ms

經過3步之後,資料就真正的寫在了硬碟上,那所花費的時間=3.8ms+3ms+0.02ms=6.82ms

硬碟操作乙個io需要6.82ms,那麼1s的時間能夠操作的io=1s/6.82ms=146.7次,所以我們10000rpm的硬碟iops即為147

同理可得以下計算過程: 

7200轉硬碟我選取hus726txtal42yz,此硬碟定址時間seek time為8.3ms

資料傳輸率為up to 233,按照200mb/s算吧

iops=1s / [ 8.3ms+(60000/7200/2)ms+0.02ms ]=1s / 12.49ms = 80

15000轉的硬碟我選取huc156060cs420x,此硬碟的定址時間seek time為3ms

資料傳輸率為189-271,按照200mb/s算吧

iops=1s / [ 3ms+(60000/15000/2)ms+0.02ms ]=1s / 5.02ms = 199

總結:對於小檔案io的定址和讀取耗時較大,多個檔案場景建議多個檔案打成整包一次傳輸到記憶體,能降低io的耗時。

檢視磁碟I O操作資訊

set statistics io on 命令是乙個 使 sql server 顯示有關由 transact sql 語句生成的磁碟活動量的資訊。我們在分析索引效能的時候,會非常有用。啟用了這個屬性後,我們在執行 sql 語句後,會收到類似如下的資訊,這有利於我們分析sql的效能 3999 row ...

對磁碟檔案的I O操作

要使用utl file包首先需要設定utl file dir引數,方法如下 以sys使用者登陸後執行以下步驟 1 create or replace directory directory as pathname 建立目錄 2 grant read,write on directory tmp to...

磁碟 I O 效能

如果將 sql server 配置成僅包含幾個千兆位元組 gb 的資料,且不承擔繁重的讀或寫活動,便沒有太大的必要關注磁碟 i o 主題,以及在硬碟之間平衡 sql server i o 活動以獲取最佳效能。但是要建立包含成百上千 gb 位元組的資料且 或承擔繁重的讀和 或寫活動的大型 sql se...