Acabei de executar uma consulta que foi bem rápida e o SQL Profiler disse que usou 30.000 leituras. Agora estou olhando para esta página: https://cloud.google.com/compute/docs/disks/performance e vejo que um disco permanente padrão tem 3.000 IOPS de leitura.
Isso significa que minha consulta levaria 10 segundos quando executada lá? Ou significa SQL reads
e read IOPS
significa uma coisa totalmente diferente?
Uma "leitura" no Profiler equivale simplesmente a ler uma página de 8kb.
Isso não equivale a IOPS, nem significa necessariamente que os dados foram lidos do disco. Ao executar uma leitura, o SQL Server lerá os dados do disco apenas se essa página ainda não existir no cache do buffer. Todos os dados passam pelo cache do buffer antes de serem usados para satisfazer sua consulta.
Portanto, você pode pensar nesse número como não tendo nada a ver com o IO do disco, mas como uma medida da quantidade de dados lidos da memória.
SQL Reads são quando o SQL analisa um bloco de disco. O bloco pode ter 10 registros ou 100 registros dentro dele. A quantidade de leituras pode ser determinada como a consulta é escrita. Exemplo passado . É possível ter zero leituras físicas porque os dados estão na memória.
IOPS são a quantidade de leituras e gravações de entrada e saída que podem ser executadas por segundo.
Referência
Portanto, eu não diria que 30.000 leituras físicas do SQL Server em um disco IOPS de 3.000 leituras serão iguais a 10 segundos; há muitos outros fatores ambientais em jogo.