Estou tentando usar o DMF sys.dm_io_virtual_file_stats para gerar informações de espera de IO em vários de meus servidores. Me deparei com esta postagem de Paul Randall: http://www.sqlskills.com/blogs/paul/survey-tempdb-and-transaction-log-io-latencies/ . Nela, ele pedia às pessoas que respondessem com os resultados dessa consulta:
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
Minha pergunta é por que ele está usando io_stall_read_ms / num_of_reads
em vez de io_stall_read_ms / num_of_bytes_read
obter a média. Eu acho que ms/byte seria mais informativo do que ms/read. O que, pelo menos em parte, me leva a acreditar que não entendo o que as colunas num_of_reads/writes realmente representam.
BOL apenas diz
Número de leituras emitidas no arquivo.
o que realmente não me ajuda muito. Agradeceria qualquer esclarecimento que pudesse obter.
A latência do sistema de E/S (da qual a latência média por IOPS é um indicador) informa se você está adicionando mais carga ao sistema de E/S do que ele pode suportar. Por causa disso, a latência média, quando comparada com a mídia em que você está executando, fornece um bom indicador se a E/S é o problema ou não.
Como regra geral, aqui estão as latências que você deve esperar se não estiver sobrecarregado no sistema de E/S
Se você está vendo latências maiores do que isso, você sabe que o sistema de E/S está sendo solicitado a fazer mais trabalho do que pode suportar.