Lista de verificação para análise de consultas lentas

Consultas ou atualizações cuja execução demora mais tempo do que o esperado podem ocorrer por uma série de motivos. Consultas com execução lenta podem ser causadas por problemas de desempenho relacionados à sua rede ou ao computador onde o SQL Server está sendo executado. Consultas lentas também podem ser causadas por problemas com seu projeto de banco de dados físico.

Existem inúmeros motivos comuns que justificam consultas e atualizações de execução lenta:

  • Comunicação de rede lenta.

  • Memória inadequada no computador servidor, ou memória insuficiente disponível para o SQL Server.

  • Falta de estatísticas úteis

  • Falta de índices úteis.

  • Falta de exibições indexadas úteis.

  • Falta de distribuição de dados útil.

  • Falta de particionamento útil.

Quando uma consulta ou atualização leva muito mais tempo do que o esperado, faça as seguintes perguntas a si mesmo, que remetem aos motivos para a execução lenta das consultas relacionadas na seção anterior:

DicaDica

Para economizar tempo, consulte essa lista de verificação antes de entrar em contato com seu fornecedor de suporte técnico.

  1. O problema de desempenho está relacionado a um componente diferente de consultas? Por exemplo, o problema é o baixo desempenho da rede? Há qualquer outro componente que pode estar causando ou contribuindo com a degradação do desempenho?

    O Monitor do Sistema do Windows pode ser usado para monitorar o desempenho do SQL Server e dos componentes não relacionados ao SQL Server. Para obter mais informações, consulte Monitorando o uso de recursos (Monitor do Sistema).

  2. Se o problema de desempenho estiver relacionado a consultas, qual consulta ou conjunto de consultas está envolvido?

    Use o SQL Server Profiler para ajudar a identificar a(s) consulta(s) lenta(s). Para obter mais informações, consulte Usando o SQL Server Profiler. Use as exibições de gerenciamento dinâmico sys.dm_exec_query_stats e sys.dm_exec_requests para encontrar consultas semelhantes que juntas consomem muitos recursos. Para obter mais informações, consulte Localizando e ajustando consultas semelhantes usando consulta e hashes de plano de consulta.

  3. Como analisar o desempenho de uma consulta de execução lenta?

    Depois de identificar a consulta lenta, você pode analisar o desempenho da consulta mais profundamente criando um Showplan, que pode ser um texto, XML ou representação gráfica do plano de execução de consulta que o otimizador de consulta gera. Você pode produzir um Showplan usando as opções SET Transact-SQL SQL Server Management Studioou SQL Server Profiler.

    Para obter informações sobre como usar as opções SET Transact-SQL para exibir texto e planos de execução de XML, consulte Exibindo planos de execução usando Opções SET de plano de execução (Transact-SQL).

    Para obter informações sobre como usar o SQL Server Management Studio para exibir planos de execução gráfica, consulte Exibindo planos de execução gráfica (SQL Server Management Studio).

    Para obter informações sobre como usar o SQL Server Profiler para exibir texto e planos de execução XML, consulte Exibindo planos de execução usando as classes de evento do SQL Server Profiler.

    As informações reunidas por essas ferramentas permitem determinar como uma consulta é executada pelo otimizador de consulta SQL Server e quais índices estão sendo usados. Usando essas informações, você poderá determinar se podem ser feitas melhorias de desempenho regravando a consulta, alterando os índices nas tabelas ou talvez modificando o projeto de banco de dados. Para obter mais informações, consulte Analisando uma consulta.

  4. A consulta foi otimizada com estatísticas úteis?

    O otimizador de consultas utiliza estatísticas para criar planos de consulta que melhoram o desempenho das consultas. Para a maioria das consultas, o otimizador já gera as estatísticas necessárias para um plano de consulta de alta qualidade; em alguns casos, você precisa criar estatísticas adicionais ou modificar o design de consulta para obter melhores resultados.

    Para obter mais informações, consulte Usando estatísticas para melhorar o desempenho de consultas. Este tópico contém diretrizes para melhorar a eficácia das estatísticas para desempenho de consulta. As diretrizes incluem o seguinte:

    • Usar as opções de estatísticas em todo o banco de dados. Por exemplo, você deve verificar se as opções de banco de dados para a criação automática de estatísticas, AUTO_CREATE_STATISTICS, e para a atualização automática de estatísticas, AUTO_UPDATE_STATISTICS, estão ativadas. Se elas estiverem desativadas, os planos de consulta poderão ter uma qualidade inferior e o seu desempenho poderá ser prejudicado.

    • Determinando Quando Criar Estatísticas. Em alguns casos, você pode melhorar os planos de consulta criando estatísticas adicionais com a instrução CREATE STATISTICS (Transact-SQL). Essas estatísticas adicionais podem capturar correlações estatísticas que o otimizador de consulta não captura ao criar estatísticas para índices ou colunas.

    • Determinando Quando Atualizar Estatísticas. Em alguns casos, você pode melhorar o plano de consulta e, portanto, o desempenho das consultas atualizando estatísticas mais frequentemente do que quando a opção AUTO_UPDATE_STATISTICS está ativada. Você pode atualizar estatísticas com a instrução UPDATE STATISTICS ou o procedimento armazenado sp_updatestats.

    • Criando Consultas Que Usam Estatísticas com Eficiência. Algumas implementações de consulta, como variáveis locais e expressões complexas no predicado de consulta, podem gerar planos de consulta de qualidade inferior. O cumprimento das diretrizes de design de consulta para o uso eficiente de estatísticas pode ajudar a evitar esse problema.

  5. Há índices adequados disponíveis? A adição de um ou mais índices melhorará o desempenho da consulta? Para obter mais informações, consulte Diretrizes para criação de índice geral, Localizando índices ausentes e Visão geral do Orientador de Otimização do Mecanismo de Banco de Dados. O Orientador de Otimização do Mecanismo de Banco de Dados também pode recomendar a criação de estatísticas necessárias.

  6. Há qualquer ponto de acesso de dados ou índice? Considere o uso da segmentação de disco. A segmentação de disco pode ser implementada usando RAID (redundant array of independent disks) nível 0, onde dados são distribuídos por várias unidades de disco. Para obter mais informações, consulte Usando arquivos e grupos de arquivos e RAID.

  7. O otimizador de consulta teve a melhor oportunidade de aperfeiçoar uma consulta complexa? Para obter mais informações, consulte Recomendações de ajuste de consulta.

  8. Se houver um grande volume de dados, você precisará particioná-lo? O gerenciamento dos dados é o benefício principal do particionamento, mas se suas tabelas e os índices nelas forem particionados de modo semelhante, esse particionamento pode melhorar o desempenho. Para obter mais informações, consulte Compreendendo o particionamento e Ajustando o design do banco de dados físico.