Estou executando o SQL Server 2012 e fazendo uma consulta SELECT * simples, posso ver que meu IO de disco no monitor de desempenho é <10 MB/s. Porém, se eu fizer um backup do banco de dados, vejo valores > 200 MB/s.
Por que o SQL Server é tão lento na recuperação de dados para mim?
Responder1
A razão pela qual você vê apenas 10 MB/s é que esses contadores de desempenho analisam os dados de um segundo para o outro, em vez de ações singulares dentro do mesmo período de tempo. Portanto, sua consulta pode ter extraído 10 MB em menos de um segundo, mas isso só será registrado no Monitor de desempenho como 10 MB/s.
Um backup extrai grandes quantidades de dados de maneira geral, para que sejam registrados na velocidade máxima do disco. Se fosse capaz de registrar IOs de disco para ações individuais, provavelmente diria 200 MB/seg ou algo semelhante, possivelmente ainda mais para pacotes menores de dados, já que a velocidade se torna quase impossível de avaliar para pacotes pequenos.
Espero que isto ajude.
Responder2
Acontece que todas as minhas leituras da consulta vinham direto da memória, e não do disco. A maneira como consegui saber isso foi executando o seguinte comando antes da consulta:
SET STATISTICS IO ON
Depois disso, executei a consulta e olhei a guia de mensagens para ver as estatísticas. As leituras lógicas são da memória, as leituras físicas são do disco.