Banco de Dados

18 mai, 2019

DBA Developers Summit 2019: Por que minha query está lenta?

Publicidade

Antes do coffee break, a especialista em SQL Server, Suellen Moraes, subiu ao palco para mostrar o “caminho das pedras” para despertar nos desenvolvedores a necessidade de conhecer o funcionamento das ferramentas utilizadas, tendo como foco o pensamento em performance do código escrito e dicas de melhores códigos.

Antes de começar sua apresentação, Suellen falou um pouco sobre a sua carreira – onde trabalha atualmente, quais são suas especialidades e por onde já passou durante sua trajetória profissional.

Para dar início à apresentação, ela falou que um dos pontos principais nesta área é analisarmos as coisas meticulosamente. Segundo ela, nem sempre o problema de query lenta é o banco de dados.

Suellen frisou que através das DMVs é possível analisar a quantidade de waits e entender melhor o problema.

No SQL Server Profiler há várias opções que podem nos ajudar:

  • error and warnings
  • locks (deadlocks)
  • Performance (paralelismo)
  • scans
  • Entre outras

Ela apresentou alguns pontos que precisavam ser analisados. Dentre eles, os ifs que são encontrados no caminho (Indexação, estatísticas, plano de execução ruim e modelagem), hardware (memória, CPU, disco, etc.) e outros, como sistema operacional e a própria aplicação.

  • “Não coloque na cabeça que o problema é a aplicação. Isso pode impedir que você identifique o problema em outros lugares, que veja além”.

Na metade de sua apresentação, Suellen contou que muitas pessoas acham que é possível resolver todos os problemas com hardware. O problema, é que o hardware é finito, segundo ela.

Slide com observações sobre os índices apresentados durante a palestra de Suellen Moraes
  • “É exatamente importante saber o que a empresa faz e as regras de negócio”.

Suellen também disse que há muitos desenvolvedores que não sabem ler o plano de execução da forma correta e enfatizou que tunning não se resume a isso.

Plano de execução

Há dois tipos de operadores no plano de execução: Blocking e non-blocking.

Operadores Blocking

  • Aguarda o término da leitura de todas as linhas para que o próximo operador possa executar
  • Sort, Eager, Spool

Operadores NonBlocking

  • Lê a informação, processa e retorna a linha para o próximo operador do plano
  • Nasted Loop, lazy spool

Ao encaminhar sua apresentação para a parte final, Suellen destacou alguns dilemas importantes que podem surgir:

Qual é o embasamento para a afirmação de que a query está lenta?

Crie um baseline e o utilize.

Analise qual o tempo que está sendo gasto no SQL em relação ao processo como um todo.

Os processos da aplicação também custam

Esteja presente no momento do desenvolvimento.

Ajudando o desenvolvedor no início do desenvolvimento reduz bastante a probabilidade de termos problemas em produção.

  • “Quando o dev trabalha junto com o dba, a coisa flui! É muito melhor. Eu vejo muitos DBAs falando que não precisam ter contato com o desenvolvedor e isso é um problema. Evitar problemas é melhor do que esperar para tê-los”.

Suellen Moraes encerrou sua palestra deixando algumas dicas importantes:

  • Tenha um baseline sempre
  • Mantenha suas estatísticas sempre atualizadas
  • Realiza periodicamente a manutenção dos seus índices
  • Entenda como ler um plano de execução
  • O problema nem sempre é o SQL Server
  • Seja amigo do desenvolvedor (ele é seu parceiro, não seu inimigo)