web-dev-qa-db-ja.com

sys.dm_io_virtual_file_stats num_of_reads / writes列について混乱

Sys.dm_io_virtual_file_stats DMFを使用して生成しようとしているので、IOいくつかのサーバー全体で情報を待機します。この投稿に出会ったのは、Paul Randallです。 http:// www.sqlskills.com/blogs/paul/survey-tempdb-and-transaction-log-io-latencies/ 。その中で、彼は人々にこのクエリの結果で応答するように求めました:

SELECT
    [database_id],
    [file_id],
    [ReadLatency] =
        CASE WHEN [num_of_reads] = 0
            THEN 0 ELSE ([io_stall_read_ms] / [num_of_reads]) END,
    [WriteLatency] =
        CASE WHEN [num_of_writes] = 0
            THEN 0 ELSE ([io_stall_write_ms] / [num_of_writes]) END
FROM
    sys.dm_io_virtual_file_stats (NULL, NULL)
WHERE
    [file_id] = 2 OR [database_id] = 2;
GO

私の質問は、なぜ彼はio_stall_read_ms / num_of_reads の代わりに io_stall_read_ms / num_of_bytes_read平均を取得するため。 ms/byteはms/readよりも有益であると思います。これは、少なくとも部分的に、num_of_reads/writes列が実際に何を表しているのか理解していないと私に信じさせます。

BOLは言う

ファイルに対して発行された読み取りの数。

これはあまり役に立ちません。私は私が得ることができるどんな説明でもありがたいです。

3
Kenneth Fisher

I/Oシステムのレイテンシ(IOPSあたりの平均レイテンシはそれを示すものです)は、I/Oシステムが処理できる以上の負荷を追加しているかどうかを示します。このため、実行しているメディアと比較した場合の平均待機時間は、I/Oが問題であるかどうかについての良い指標となります。

経験則として、I/Oシステムに過負荷がかかっていない場合に予想される待ち時間は次のとおりです

  • スピニングメディア:約5-10ms
  • SSD:<1ms

それよりもレイテンシが高い場合は、I/Oシステムが処理できる以上の処理を要求されていることがわかります。

4
Thomas Kejser