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.
- “É 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)