Como identificar problemas de latência de disco no SQL Server

DBA e Consultor de Banco de Dados

Como identificar problemas de latência de disco no SQL Server

Tempo de leitura: 8 minutos

Fala galera!

Hoje vamos mergulhar em um dos problemas mais comuns e muitas vezes ignorados que podem sabotar a performance do seu SQL Server. A famosa “Latência de disco”.

Se você já se perguntou por que suas consultas estão lentas mesmo com índices otimizados, ou por que o servidor parece “engasgar” do nada, este artigo é para você. Vou mostrar como identificar, diagnosticar e resolver problemas de latência de disco usando as ferramentas que o próprio SQL Server nos oferece.

O que é latência de disco e por que ela importa tanto?

Latência de disco é o tempo que o SQL Server precisa esperar para que uma operação de I/O (leitura ou escrita) seja completada pelo subsistema de armazenamento. Em outras palavras, é quanto tempo seus dados “demoram para chegar” quando o SQL Server pede por eles.
Por que isso é crítico?
  • SQL Server é extremamente dependente de IO
  • Dados e logs precisam ser lidos/escritos constantemente
  • Cada milissegundo conta quando falamos de performance
  • Uma latência alta pode causar timeout de consultas

Segundo a documentação da Microsoft, aqui estão os valores que devemos ter como referência:

  • < 10-15ms – Aceitável para a maioria dos workloads
  • < 2ms – Excelente (SSD/NVMe)
  • > 20ms – Atenção – possível problema
  • > 50ms – Problema sério de I/O
Desde 2005, a Microsoft nos deu uma ferramenta poderosa para monitorar IO. A DMV “sys.dm_io_virtual_file_stats“. Essa belezinha coleta estatísticas desde o último restart do SQL Server e é nossa principal aliada para esse tipo de diagnóstico.
Aqui está minha versão da query de diagnóstico, com classificação dos resultados

 

Interpretando os Resultados

Excelente (< 2ms)
Parabéns! Seu storage está voando. Provavelmente usando SSD ou NVMe com configuração adequada.
Muito Bom (2-5ms)
Performance sólida. Pode ser SSD mais antigo ou configuração bem otimizada de storage tradicional.
Bom (6-10ms)
Ainda aceitável, mas fique de olho. Pode ser hora de planejar um upgrade.
Ruim (11-20ms)
Atenção necessária. Já está impactando performance. Investigue:
  • Configurações da storage
  • Gargalos de hardware
  • Concorrência de I/O
Muito Ruim (21-100ms)
Problema sério! Usuários já estão sentindo o impacto. Ação imediata necessária.
Crítico (> 100ms)
Emergência! Performance inaceitável. Investigação urgente do subsistema de storage.

 

Script para análise por Drive

Muitas vezes queremos ver o comportamento geral por drive:

 

Diagnosticando Queries com IO Alto

Às vezes o problema não está no hardware, mas sim em queries específicas que estão gerando muito IO (Leituras). Aqui está um script para identificar essas queries:

 

Monitoramento em Tempo Real com Wait Stats

Para uma visão em tempo real dos problemas de IO, podemos visualizar a partir dos eventos de espera (waits stats) :

Dicas práticas para melhorar a performance do seu ambiente

Separação de Arquivos

  • Separe os arquivos de Dados e Logs em discos diferentes no seu servidor (Veja bem, eu disse : Discos diferentes, se estiverem virtualizados no mesmo storage, talvez não valha a pena, ou valha no caso de querer manter as labels separadas por questões de organização).
  • Coloque o TempDB provisionado em drive separado (preferencialmente SSD)
  • Backups em storage separado

Configuração de Hardware

  • Use SSD para logs de transação
  • Configure RAID 10 para dados críticos
  • RAID 1 para logs (performance sequencial)

Script de Diagnóstico Completo

Para finalizar, aqui está um script que faz uma análise completa do seu ambiente:

 


Conclusão

Latência de disco não é só um número técnico, é  um indicador direto da experiência do usuário com seu sistema. Uma latência alta significa:

  • Timeouts de aplicação
  • Lentidão perceptível pelos usuários
  • Degradação geral da performance
  • Possíveis perdas de produtividade em virtude da lentidão
Acompanhe sempre de perto os indicadores do disco, eles dizem muito sobre a saúde do seu ambiente.

E você? Já enfrentou problemas de latência de disco? Qual foi a solução que funcionou no seu ambiente?

Compartilhe sua experiência nos comentários!

Gustavo Larocca

Consultor SQL Server

 

Referências:
– [Microsoft Docs – Troubleshoot slow SQL Server performance caused by I/O issues](https://learn.microsoft.com/en-us/troubleshoot/sql/database-engine/performance/troubleshoot-sql-io-performance)

 

Deixe uma resposta

Este site utiliza o Akismet para reduzir spam. Saiba como seus dados em comentários são processados.