Os planos de execução de consultas SQL são gerados quando um otimizador de consultas determina a maneira mais eficiente de entregar os dados solicitados por uma consulta. Esses planos são uma representação das operações de banco de dados que uma consulta está executando, mostrando quais objetos a consulta usa, os tipos de usos e como eles estão sendo usados.
É do conhecimento geral que consultas com desempenho insatisfatório são um indicador importante de que algo está errado em um banco de dados. Portanto, olhar “por baixo do capô” no plano de execução de uma consulta é uma das melhores maneiras de determinar a causa do problema de desempenho.
As informações disponíveis em um plano de execução do SQL são inestimáveis para os DBAs solucionarem problemas de desempenho de consulta do SQL Server, pois permitem que eles cheguem à causa raiz do problema e ajustem a consulta conforme necessário.
Examinar os planos de execução do SQL é uma das primeiras etapas no ajuste de desempenho porque o plano destaca claramente as fontes mais prováveis de problemas em uma consulta, incluindo operadores caros, um número incomum de registros fluindo entre operadores e operadores extras.
Os DBAs também se beneficiam dos avisos do plano de execução que alertam os usuários sobre problemas como vazamentos de tempdb e índices ausentes.
Tipos de planos de execução SQL
Existem dois tipos principais de planos de execução SQL:planos de execução estimados e planos de estimativa reais.
Os planos de execução estimados são melhor descritos como uma espécie de previsão do tempo. Como o nome indica, os planos de execução estimados usam cálculos aproximados, estatísticas e outros parâmetros para estimar as etapas que podem ser seguidas pelo SQL Server Engine para executar a consulta enviada após a análise da consulta.
Você não precisa executar a consulta para gerar esse tipo de plano de execução, portanto, é bom para consultas complexas para as quais a geração de um plano de execução real levaria muito tempo.
Os planos de execução reais executam a consulta enviada e exibem as etapas que ocorreram durante a execução. Esse tipo de plano exibe cálculos reais e as etapas reais (não estimadas) seguidas pelo SQL Server Engine.
Como esse tipo de plano de execução realmente executa a consulta, é uma boa opção para solucionar problemas de desempenho de consulta.
Como gerar um plano de execução SQL
Hackernoon fornece uma descrição sucinta de como gerar planos de execução estimados e reais. O processo pode ser resumido nas seguintes etapas:
Gerar um plano de execução estimado
- Vá para o banco de dados
- Destaque a consulta
- Clique em "Consultar"
- Clique em "Exibir plano de execução estimado" ou use o atalho Ctrl + L
Gerar um plano de execução real
- Vá para o banco de dados
- Destaque a consulta
- Clique em "Consultar"
- Clique em "Incluir Plano de Execução Real" ou use o atalho Ctrl + M
Você encontrará uma explicação detalhada de como gerar planos de execução estimados e planos de execução reais na documentação oficial da Microsoft.
Por que os planos de execução de SQL estimados e reais podem ser diferentes
Geralmente, os planos de execução estimados e reais serão semelhantes. No entanto, há ocasiões em que são diferentes. Isso é normal e ocorre porque as estatísticas do banco de dados e os dados reais são diferentes. Essas diferenças podem ser introduzidas através de vários canais:
Paralelismo
O custo do plano pode fazer com que dois planos de execução sejam criados para uma consulta enviada. O SQL Server Engine escolherá se deve ou não usar o plano paralelo, portanto, é possível que um plano use o plano paralelo e o outro use o plano serial.
Estatísticas obsoletas
Quando você insere e exclui dados de tabelas e índices ou altera a tabela ou o esquema de índice, as estatísticas mudam. Se as estatísticas não forem atualizadas regularmente, o plano de execução real será diferente do plano de execução estimado.
Plano estimado inválido
Se uma consulta contiver uma instrução que exija uma tabela temporária que só existe se a consulta for executada, a geração de um plano de execução estimado criará um erro porque nenhuma consulta foi executada. A mesma consulta funcionaria bem no plano de execução real porque a consulta foi executada.
Os planos de execução do SQL são um recurso valioso para solucionar problemas de desempenho do SQL Server. Saber como gerar planos de execução de SQL estimados e reais é uma ferramenta essencial para qualquer DBA encarregado de ajustar consultas para obter um desempenho ideal.