Marcelo Raposo, Analista de Sistemas na Móveis Simonetti, falou sobre 'Performance e Tunning no dia a dia do desenvolvimento: boas práticas com bancos de dados' no iMasters Developer Week - Vitória.
O iMasters Developer Week - Vitória aconteceu nos dias 3, 4 e 5 de Março no Teatro Rede Gazeta em Vitória-ES - http://developerweek.imasters.com.br/vitoria/
Performance e Tunning no dia a dia do desenvolvimento: boas práticas com bancos de dados, por Marcelo Raposo
1. Marcelo M. Q. Raposo
Tecnólogo pelo IFES - ES, ex UFES (JANELA!)
Desde 2006 na Móveis Simonetti.
Dev Certificado Oracle MySQL, DBA Coming soon!
Apaixonado pela vida, por desafios e pelo trabalho.
Otimista por natureza e também por opção.
Desde 2010 vive a maravilhosa aventura de ser pai
Ciclista de MTB - Atualmente fanboy Apple e Hyundai
www.marceloraposo.com.br
PERGUNTA RÁPIDA? FAÇA A QUALQUER HORA.
PERGUNTA LONGA - FINAL, OK?
MEU TELEFONE?? DESCULPE, SOU CASADO!
@mmqraposo
2.
3. www.moveissimonetti.com.br
Matriz em Pinheiros
Rede varejista - 43 filiais - ES(25), BA(16) e MG(2)
Principal sistema (WEBPDV) PHP, MySQL Enterprise,
sistemas integrados com MySQL e Oracle.
Cadastre seu currículo em nosso site!
Em 2006 tínhamos 18 filiais.
Inaugurações: Itacibá(06/03), Terra Vermelha(13/03)
Shop VV(20/03), Teófilo Otoni(27/03), Guarapari.
E começa nossa história…
5. Você criou um sistema? E tudo funciona…
E AS TABELAS CRESCEM…
Até que um dia, sem muitos avisos… o SISTEMA PÁRA
6. Você criou um sistema? E tudo funciona…
E AS TABELAS CRESCEM…
Até que um dia, sem muitos avisos… o SISTEMA PÁRA
As perguntas do seu cliente…
Mas você disse que funcionaria.
Banco de dados?? Você não disse que
este é bom e funcionaria??
7. Você criou um sistema? E tudo funciona…
E AS TABELAS CRESCEM…
Até que um dia, sem muitos avisos… o SISTEMA PÁRA
Sistema torna-se lento sem aviso - SGBD leva situação até
o limite.
Não existe botão nem solução mágica.
Não resolve trocar o banco de dados.
Dificuldades em recuperar a performance rapidamente.
As perguntas do seu cliente…
Mas você disse que funcionaria.
Banco de dados?? Você não disse que
este é bom e funcionaria??
8. Você criou um sistema? E tudo funciona…
E AS TABELAS CRESCEM…
Até que um dia, sem muitos avisos… o SISTEMA PÁRA
Sistema torna-se lento sem aviso - SGBD leva situação até
o limite.
Não existe botão nem solução mágica.
Não resolve trocar o banco de dados.
Dificuldades em recuperar a performance rapidamente.
As perguntas do seu cliente…
Mas você disse que funcionaria.
Banco de dados?? Você não disse que
este é bom e funcionaria??
Identificar pontos de baixa performance
Recuperar sem perder regras de negócio
Não perder performance ao invés de ganhar?
9. Performance e Tunning no dia a dia do
desenvolvimento
Tamanho importa - pense em seus campos
10. Performance e Tunning no dia a dia do
desenvolvimento
Tamanho importa - pense em seus campos
Campo deve ter o menor tipo de dado
possível, que atenda a toda a sua
necessidade.
Tabela menor = Menos espaço em disco
Menos espaço em disco = Menos acesso
a disco
Arquivos de Log e Auditoria grandes
demais pesam na performance! - Disco
lembra? General LOG NÃO!
Alguns relatórios não tem jeito - Usam muito disco.
Se necessário use máquina para consulta - ou
CLUSTER
12. Performance e Tunning no dia a dia do
desenvolvimento
Chaves Estrangeiras e JOINs
Chaves estrangeiras são ótimas e
necessárias, crie-as com carinho.
13. Performance e Tunning no dia a dia do
desenvolvimento
Chaves Estrangeiras e JOINs
Chaves estrangeiras são ótimas e
necessárias, crie-as com carinho.
JOINs, restrições de operações, evitam
registros órfãos.
14. Performance e Tunning no dia a dia do
desenvolvimento
Chaves Estrangeiras e JOINs
Chaves estrangeiras são ótimas e
necessárias, crie-as com carinho.
JOINs, restrições de operações, evitam
registros órfãos.
INNER JOIN, LEFT JOIN, RIGTH JOIN -
quando usar?
15. Performance e Tunning no dia a dia do
desenvolvimento
Chaves Estrangeiras e JOINs
Chaves estrangeiras são ótimas e
necessárias, crie-as com carinho.
Queries grandes demais e com muitos JOINS têm sua
saúde baseada nas chaves estrageiras.
JOINs, restrições de operações, evitam
registros órfãos.
INNER JOIN, LEFT JOIN, RIGTH JOIN -
quando usar?
19. Performance e Tunning no dia a dia do
desenvolvimento
Recuperando informações
Pense em como irá recuperar sua
informação.
20. Performance e Tunning no dia a dia do
desenvolvimento
Recuperando informações
Pense em como irá recuperar sua
informação.
Pense em índices para uso em buscas
do sistema e relatórios.
21. Performance e Tunning no dia a dia do
desenvolvimento
Recuperando informações
Pense em como irá recuperar sua
informação.
Pense em índices para uso em buscas
do sistema e relatórios.
Não crie um índice para cada campo!
22. Performance e Tunning no dia a dia do
desenvolvimento
Recuperando informações
Pense em como irá recuperar sua
informação.
Pense em índices para uso em buscas
do sistema e relatórios.
Não crie um índice para cada campo!
Um índice pode ter vários campos, se
for usado na ordem correta.
23. Performance e Tunning no dia a dia do
desenvolvimento
Recuperando informações
Pense em como irá recuperar sua
informação.
Pense em índices para uso em buscas
do sistema e relatórios.
VAMOS TESTAR!
INDEX `w1` (`data` ASC, `valor` DESC))
Não crie um índice para cada campo!
Um índice pode ter vários campos, se
for usado na ordem correta.
25. Performance e Tunning no dia a dia do
desenvolvimento
Objetivo - reduzir o tempo de leitura em uma tabela com
mais de 1 milhão de registros.
26. Performance e Tunning no dia a dia do
desenvolvimento
Objetivo - reduzir o tempo de leitura em uma tabela com
mais de 1 milhão de registros.
Definir o que buscar e como buscar. Identificar a maior
cardinalidade (??)
27. Performance e Tunning no dia a dia do
desenvolvimento
Objetivo - reduzir o tempo de leitura em uma tabela com
mais de 1 milhão de registros.
Definir o que buscar e como buscar. Identificar a maior
cardinalidade (??)
Criar a tabela e seus índices.
28. Performance e Tunning no dia a dia do
desenvolvimento
CACHE no BD - pode ser seu amigo
29. Performance e Tunning no dia a dia do
desenvolvimento
CACHE no BD - pode ser seu amigo
É um recurso comum em vários SGBD. inclusive
MySQL e Oracle
30. Performance e Tunning no dia a dia do
desenvolvimento
CACHE no BD - pode ser seu amigo
É um recurso comum em vários SGBD. inclusive
MySQL e Oracle
É chato de usar, pois nem toda query pode ser
cacheada.
31. Performance e Tunning no dia a dia do
desenvolvimento
CACHE no BD - pode ser seu amigo
É um recurso comum em vários SGBD. inclusive
MySQL e Oracle
É chato de usar, pois nem toda query pode ser
cacheada.
Tentar cachear TODA query pode ser ruim para a
performance
32. Performance e Tunning no dia a dia do
desenvolvimento
CACHE no BD - pode ser seu amigo
É um recurso comum em vários SGBD. inclusive
MySQL e Oracle
É chato de usar, pois nem toda query pode ser
cacheada.
Tentar cachear TODA query pode ser ruim para a
performance
Cache ativo, inativo ou por demanda ?
34. Performance e Tunning no dia a dia do
desenvolvimento
Integrar a equipe de desenvolvimento
35. Performance e Tunning no dia a dia do
desenvolvimento
Integrar a equipe de desenvolvimento
Uso objetivo e direto de índices
36. Performance e Tunning no dia a dia do
desenvolvimento
Integrar a equipe de desenvolvimento
Uso objetivo e direto de índices
Teste de queries pela equipe de desenvolvimento.
37. Performance e Tunning no dia a dia do
desenvolvimento
Integrar a equipe de desenvolvimento
Uso objetivo e direto de índices
Teste de queries pela equipe de desenvolvimento.
Definir padrões para uso ou não de cache.
38. Performance e Tunning no dia a dia do
desenvolvimento
Integrar a equipe de desenvolvimento
Uso objetivo e direto de índices
Teste de queries pela equipe de desenvolvimento.
Definir padrões para uso ou não de cache.
Definir o uso ou não de consulta na base réplica
39. Performance e Tunning no dia a dia do
desenvolvimento
Integrar a equipe de desenvolvimento
Uso objetivo e direto de índices
Teste de queries pela equipe de desenvolvimento.
Definir padrões para uso ou não de cache.
Definir o uso ou não de consulta na base réplica
Lembre-se: que processos em controle transacional
não estão ainda na base réplica