3 Maneiras para encontrar consultas SQL lentas
1. Encontre consultas lentas com DMVs SQL
Um dos ótimos recursos do SQL Server é são as DMVs (views de gerenciamento dinâmico) incorporadas a ele. Existem dezenas delas epodem fornecer uma riqueza de informações sobre uma ampla gama de tópicos.
Existem vários DMVs que fornecem dados sobre estatísticas de consulta, planos de execução, consultas recentes e muito mais. Estas podem ser usados juntos para fornecer algumas idéias surpreendentes.
Exemplo abaixo, pode ser usada para localizar as consultas que usam a maioria das leituras, gravações, tempo de trabalho (CPU) etc.
SELECT TOP 10 SUBSTRING(qt.TEXT, (qs.statement_start_offset/2)+1, ((CASE qs.statement_end_offset WHEN -1 THEN DATALENGTH(qt.TEXT) ELSE qs.statement_end_offset END - qs.statement_start_offset)/2)+1), qs.execution_count, qs.total_logical_reads, qs.last_logical_reads, qs.total_logical_writes, qs.last_logical_writes, qs.total_worker_time, qs.last_worker_time, qs.total_elapsed_time/1000000 total_elapsed_time_in_S, qs.last_elapsed_time/1000000 last_elapsed_time_in_S, qs.last_execution_time, qp.query_plan FROM sys.dm_exec_query_stats qs CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) qt CROSS APPLY sys.dm_exec_query_plan(qs.plan_handle) qp ORDER BY qs.total_logical_reads DESC -- logical reads -- ORDER BY qs.total_logical_writes DESC -- logical writes -- ORDER BY qs.total_worker_time DESC -- CPU time
O resultado da consulta será algo como abaixo. A imagem abaixo é de um aplicativo de marketing. Você pode ver que uma consulta específica (a primeira) ocupa todos os recursos.
Com base na resultado na consulta SQL é possível analisar se há alguma maneira de melhorá-la, adicionar um índice, etc.

Prós: Estatísticas de acumulação básica sempre disponíveis.
Contras: não informa o que está chamando as consultas. Não é possível visualizar quando as consultas estão sendo feitas com o tempo.
2. SQL Server Profiler
O SQL Server Profiler existe há muito tempo. É muito útil e possibilita ver em tempo real quais consultas SQL estão sendo executadas em seu banco de dados.
O SQL Profiler captura eventos muito detalhados sobre sua interação com o SQL Server.
Conexões de login, desconexões e falhas
Instruções SELECT, INSERT, UPDATE e DELETE
Chamadas de status de lote RPC
Início e fim dos procedimentos armazenados
Início e final de instruções dentro de um procedimento armazenado
Início e fim de um lote SQL
Erros gravados no log de erros do SQL Server
Um bloqueio adquirido ou liberado em um objeto de banco de dados
Um cursor aberto
Verificações de permissão de segurança

SQL SERVER PROFILER
Tutorial: SQL Server Profiler
Prós: Dados muito detalhados disponíveis.
Contras: Você tem que ativá-lo manualmente. Isso força você a recriar um cenário que você está tentando capturar. Eventualmente está indo embora em favor de Eventos Estendidos.
3. Eventos Estendidos do SQL Server
Eventos estendidos funciona via rastreamento de eventos (ETW). Esta tem sido a maneira comum de todas as tecnologias relacionadas à Microsoft exporem dados de diagnóstico.
O ETW oferece muito mais flexibilidade. Como desenvolvedor, eu poderia facilmente acessar os eventos ETW do SQL Server para coletar dados para usos personalizados. Isso é muito legal e muito poderoso.

Tutorial : Introducing SQL Server Extended Events
Prós: mais fácil de ativar e deixar em execução. Mais fácil de desenvolver soluções personalizadas com.
Contras: Uma vez que é bastante novo, a maioria das pessoas pode não estar ciente disso.
Baita conteúdo Luizão!
ResponderExcluirParabéns.
Vlw brother abraço
Excluir