Marcelo M. Q. Raposo
Tecnólogo pelo IFES - ES, ex UFES (JANELA!)
Desde 2006 na Móveis Simonetti.
Dev Certificado Oracle My...
www.moveissimonetti.com.br
Matriz em Pinheiros
Rede varejista - 43 filiais - ES(25), BA(16) e MG(2)
Principal sistema (WEB...
Aplicação
Master
Físico
Slave 1
Físico
Slave 2
Virtual
Slave 3
Virtual
Homolog
Físico
Dev -
Virtual
220Gb de Banco por
Hos...
Você criou um sistema? E tudo funciona…
E AS TABELAS CRESCEM…
Até que um dia, sem muitos avisos… o SISTEMA PÁRA
Você criou um sistema? E tudo funciona…
E AS TABELAS CRESCEM…
Até que um dia, sem muitos avisos… o SISTEMA PÁRA
As pergunt...
Você criou um sistema? E tudo funciona…
E AS TABELAS CRESCEM…
Até que um dia, sem muitos avisos… o SISTEMA PÁRA
Sistema to...
Você criou um sistema? E tudo funciona…
E AS TABELAS CRESCEM…
Até que um dia, sem muitos avisos… o SISTEMA PÁRA
Sistema to...
Performance e Tunning no dia a dia do
desenvolvimento
Tamanho importa - pense em seus campos
Performance e Tunning no dia a dia do
desenvolvimento
Tamanho importa - pense em seus campos
Campo deve ter o menor tipo d...
Performance e Tunning no dia a dia do
desenvolvimento
Chaves Estrangeiras e JOINs
Performance e Tunning no dia a dia do
desenvolvimento
Chaves Estrangeiras e JOINs
Chaves estrangeiras são ótimas e
necessá...
Performance e Tunning no dia a dia do
desenvolvimento
Chaves Estrangeiras e JOINs
Chaves estrangeiras são ótimas e
necessá...
Performance e Tunning no dia a dia do
desenvolvimento
Chaves Estrangeiras e JOINs
Chaves estrangeiras são ótimas e
necessá...
Performance e Tunning no dia a dia do
desenvolvimento
Chaves Estrangeiras e JOINs
Chaves estrangeiras são ótimas e
necessá...
Performance e Tunning no dia a dia do
desenvolvimento
Performance e Tunning no dia a dia do
desenvolvimento
Recuperando informações
Performance e Tunning no dia a dia do
desenvolvimento
Recuperando informações
Performance e Tunning no dia a dia do
desenvolvimento
Recuperando informações
Pense em como irá recuperar sua
informação.
Performance e Tunning no dia a dia do
desenvolvimento
Recuperando informações
Pense em como irá recuperar sua
informação.
...
Performance e Tunning no dia a dia do
desenvolvimento
Recuperando informações
Pense em como irá recuperar sua
informação.
...
Performance e Tunning no dia a dia do
desenvolvimento
Recuperando informações
Pense em como irá recuperar sua
informação.
...
Performance e Tunning no dia a dia do
desenvolvimento
Recuperando informações
Pense em como irá recuperar sua
informação.
...
Performance e Tunning no dia a dia do
desenvolvimento
Performance e Tunning no dia a dia do
desenvolvimento
Objetivo - reduzir o tempo de leitura em uma tabela com
mais de 1 mi...
Performance e Tunning no dia a dia do
desenvolvimento
Objetivo - reduzir o tempo de leitura em uma tabela com
mais de 1 mi...
Performance e Tunning no dia a dia do
desenvolvimento
Objetivo - reduzir o tempo de leitura em uma tabela com
mais de 1 mi...
Performance e Tunning no dia a dia do
desenvolvimento
CACHE no BD - pode ser seu amigo
Performance e Tunning no dia a dia do
desenvolvimento
CACHE no BD - pode ser seu amigo
É um recurso comum em vários SGBD. ...
Performance e Tunning no dia a dia do
desenvolvimento
CACHE no BD - pode ser seu amigo
É um recurso comum em vários SGBD. ...
Performance e Tunning no dia a dia do
desenvolvimento
CACHE no BD - pode ser seu amigo
É um recurso comum em vários SGBD. ...
Performance e Tunning no dia a dia do
desenvolvimento
CACHE no BD - pode ser seu amigo
É um recurso comum em vários SGBD. ...
Performance e Tunning no dia a dia do
desenvolvimento
Performance e Tunning no dia a dia do
desenvolvimento
Integrar a equipe de desenvolvimento
Performance e Tunning no dia a dia do
desenvolvimento
Integrar a equipe de desenvolvimento
Uso objetivo e direto de índices
Performance e Tunning no dia a dia do
desenvolvimento
Integrar a equipe de desenvolvimento
Uso objetivo e direto de índice...
Performance e Tunning no dia a dia do
desenvolvimento
Integrar a equipe de desenvolvimento
Uso objetivo e direto de índice...
Performance e Tunning no dia a dia do
desenvolvimento
Integrar a equipe de desenvolvimento
Uso objetivo e direto de índice...
Performance e Tunning no dia a dia do
desenvolvimento
Integrar a equipe de desenvolvimento
Uso objetivo e direto de índice...
Dia normal
Black Friday 2014
Black Friday 2014
E-mail:
mmqraposo@gmail.com
PERGUNTAS???
Twitter
@mmqraposo
FOI UM PRAZER!
Black Friday 2014
E-mail:
mmqraposo@gmail.com
PERGUNTAS???
Twitter
@mmqraposo
marceloraposo.com.br
Estamos em:
imaster.com...
Performance e Tunning - Boas práticas em desenvolvimento
Performance e Tunning - Boas práticas em desenvolvimento
Performance e Tunning - Boas práticas em desenvolvimento
Próximos SlideShares
Carregando em…5
×

Performance e Tunning - Boas práticas em desenvolvimento

350 visualizações

Publicada em

Palestra Performance e Tunning - Boas prásticas no desenvolvimento com banco de dados.
Apresentada em 05/03/2015 no IMasters Developers Week Vitória

  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Performance e Tunning - Boas práticas em desenvolvimento

  1. 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. 2. 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…
  3. 3. Aplicação Master Físico Slave 1 Físico Slave 2 Virtual Slave 3 Virtual Homolog Físico Dev - Virtual 220Gb de Banco por Host Tráfego normal 4Mb/s 3mil queries por segundo PHP 5.6 sobre Apache Máquina para consultas e relatórios @mmqraposo
  4. 4. Você criou um sistema? E tudo funciona… E AS TABELAS CRESCEM… Até que um dia, sem muitos avisos… o SISTEMA PÁRA
  5. 5. 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??
  6. 6. 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??
  7. 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?? Identificar pontos de baixa performance Recuperar sem perder regras de negócio Não perder performance ao invés de ganhar?
  8. 8. Performance e Tunning no dia a dia do desenvolvimento Tamanho importa - pense em seus campos
  9. 9. 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
  10. 10. Performance e Tunning no dia a dia do desenvolvimento Chaves Estrangeiras e JOINs
  11. 11. 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.
  12. 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. JOINs, restrições de operações, evitam registros órfãos.
  13. 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. INNER JOIN, LEFT JOIN, RIGTH JOIN - quando usar?
  14. 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. 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?
  15. 15. Performance e Tunning no dia a dia do desenvolvimento
  16. 16. Performance e Tunning no dia a dia do desenvolvimento Recuperando informações
  17. 17. Performance e Tunning no dia a dia do desenvolvimento Recuperando informações
  18. 18. Performance e Tunning no dia a dia do desenvolvimento Recuperando informações Pense em como irá recuperar sua informação.
  19. 19. 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.
  20. 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. Não crie um índice para cada campo!
  21. 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! Um índice pode ter vários campos, se for usado na ordem correta.
  22. 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. 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.
  23. 23. Performance e Tunning no dia a dia do desenvolvimento
  24. 24. 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.
  25. 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. Definir o que buscar e como buscar. Identificar a maior cardinalidade (??)
  26. 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 (??) Criar a tabela e seus índices.
  27. 27. Performance e Tunning no dia a dia do desenvolvimento CACHE no BD - pode ser seu amigo
  28. 28. 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
  29. 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 É chato de usar, pois nem toda query pode ser cacheada.
  30. 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. Tentar cachear TODA query pode ser ruim para a performance
  31. 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 Cache ativo, inativo ou por demanda ?
  32. 32. Performance e Tunning no dia a dia do desenvolvimento
  33. 33. Performance e Tunning no dia a dia do desenvolvimento Integrar a equipe de desenvolvimento
  34. 34. Performance e Tunning no dia a dia do desenvolvimento Integrar a equipe de desenvolvimento Uso objetivo e direto de índices
  35. 35. 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.
  36. 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. Definir padrões para uso ou não de cache.
  37. 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. Definir o uso ou não de consulta na base réplica
  38. 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 Lembre-se: que processos em controle transacional não estão ainda na base réplica
  39. 39. Dia normal
  40. 40. Black Friday 2014
  41. 41. Black Friday 2014 E-mail: mmqraposo@gmail.com PERGUNTAS??? Twitter @mmqraposo FOI UM PRAZER!
  42. 42. Black Friday 2014 E-mail: mmqraposo@gmail.com PERGUNTAS??? Twitter @mmqraposo marceloraposo.com.br Estamos em: imaster.com.br tiespecialistas.com.br FOI UM PRAZER!

×