Ola PessoALL,

Tenho passado boa parte das últimas semanas ajudando clientes com problemas de escalabilidade em suas aplicações e como muitas das vezes não tenho acesso ao código fonte das aplicações, tento ser o mais acertivo possível nos relatórios que monto para ajudar os desenvolvedores a resolver os possiveis problemas de performance.

Hoje queria compartilhar uma dica simples, mas que muitas vezes ajuda a dar muita acertividade a resolver o problema.

Monitorando o banco usando a sp_whoIsActive eu consigo ter uma boa visão de queries problemáticas que estão sendo executadas.

Se você ainda não conhece a sp_whoIsActive, confere no blog do Dirceu Resende como usar e no blog do Fabricio Lima como criar um histórico para análise

Com as queries em mãos eu uso o Application Insights para poder descobrir quais rotas estão executando aquela query.

Para iniciar acesse a aba Analytics do seu Application Insights

Com a aba Analytics, podemos iniciar nossa investigação. A tabela que mais nos interessa aqui é a tabela "Dependencies"

Para filtrar por por uma query especifica podemos utilizar a coluna "data" e o operador contains e na coluna "operation_Name" podever ver quais rotas executaram aquela consulta.

Caso necessite ser um pouco mais espefícico para descobrir quais urls executam aquela query, podemos fazer um join na tabela de requests, conforme a query a seguir

dependencies
| where type == "SQL" and data startswith "SELECT TOP(1)" 
| join kind= inner (
   requests 
) on operation_Id 
| project url, data

Prontinho! Por hoje é só pessoALL.
Espero ter ajudado vocês a encontrarem alguns possiveis pontos de lentidão no sistema de vocês.

[]s
rsantosdev