performance e tunning - boas práticas em desenvolvimento
TRANSCRIPT
![Page 1: Performance e Tunning - Boas práticas em desenvolvimento](https://reader034.vdocuments.mx/reader034/viewer/2022052700/55a686f51a28ab3f1e8b4577/html5/thumbnails/1.jpg)
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
![Page 2: Performance e Tunning - Boas práticas em desenvolvimento](https://reader034.vdocuments.mx/reader034/viewer/2022052700/55a686f51a28ab3f1e8b4577/html5/thumbnails/2.jpg)
![Page 3: Performance e Tunning - Boas práticas em desenvolvimento](https://reader034.vdocuments.mx/reader034/viewer/2022052700/55a686f51a28ab3f1e8b4577/html5/thumbnails/3.jpg)
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…
![Page 4: Performance e Tunning - Boas práticas em desenvolvimento](https://reader034.vdocuments.mx/reader034/viewer/2022052700/55a686f51a28ab3f1e8b4577/html5/thumbnails/4.jpg)
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
![Page 5: Performance e Tunning - Boas práticas em desenvolvimento](https://reader034.vdocuments.mx/reader034/viewer/2022052700/55a686f51a28ab3f1e8b4577/html5/thumbnails/5.jpg)
Você criou um sistema? E tudo funciona…E AS TABELAS CRESCEM…
Até que um dia, sem muitos avisos… o SISTEMA PÁRA
![Page 6: Performance e Tunning - Boas práticas em desenvolvimento](https://reader034.vdocuments.mx/reader034/viewer/2022052700/55a686f51a28ab3f1e8b4577/html5/thumbnails/6.jpg)
Você criou um sistema? E tudo funciona…E AS TABELAS CRESCEM…
Até que um dia, sem muitos avisos… o SISTEMA PÁRAAs perguntas do seu cliente…
Mas você disse que funcionaria. Banco de dados?? Você não disse que
este é bom e funcionaria??
![Page 7: Performance e Tunning - Boas práticas em desenvolvimento](https://reader034.vdocuments.mx/reader034/viewer/2022052700/55a686f51a28ab3f1e8b4577/html5/thumbnails/7.jpg)
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??
![Page 8: Performance e Tunning - Boas práticas em desenvolvimento](https://reader034.vdocuments.mx/reader034/viewer/2022052700/55a686f51a28ab3f1e8b4577/html5/thumbnails/8.jpg)
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?
![Page 9: Performance e Tunning - Boas práticas em desenvolvimento](https://reader034.vdocuments.mx/reader034/viewer/2022052700/55a686f51a28ab3f1e8b4577/html5/thumbnails/9.jpg)
Performance e Tunning no dia a dia do desenvolvimento
Tamanho importa - pense em seus campos
![Page 10: Performance e Tunning - Boas práticas em desenvolvimento](https://reader034.vdocuments.mx/reader034/viewer/2022052700/55a686f51a28ab3f1e8b4577/html5/thumbnails/10.jpg)
Performance e Tunning no dia a dia do desenvolvimento
Tamanho importa - pense em seus camposCampo 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 discoArquivos 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
![Page 11: Performance e Tunning - Boas práticas em desenvolvimento](https://reader034.vdocuments.mx/reader034/viewer/2022052700/55a686f51a28ab3f1e8b4577/html5/thumbnails/11.jpg)
Performance e Tunning no dia a dia do desenvolvimento
Chaves Estrangeiras e JOINs
![Page 12: Performance e Tunning - Boas práticas em desenvolvimento](https://reader034.vdocuments.mx/reader034/viewer/2022052700/55a686f51a28ab3f1e8b4577/html5/thumbnails/12.jpg)
Performance e Tunning no dia a dia do desenvolvimento
Chaves Estrangeiras e JOINsChaves estrangeiras são ótimas e necessárias, crie-as com carinho.
![Page 13: Performance e Tunning - Boas práticas em desenvolvimento](https://reader034.vdocuments.mx/reader034/viewer/2022052700/55a686f51a28ab3f1e8b4577/html5/thumbnails/13.jpg)
Performance e Tunning no dia a dia do desenvolvimento
Chaves Estrangeiras e JOINsChaves estrangeiras são ótimas e necessárias, crie-as com carinho.
JOINs, restrições de operações, evitam registros órfãos.
![Page 14: Performance e Tunning - Boas práticas em desenvolvimento](https://reader034.vdocuments.mx/reader034/viewer/2022052700/55a686f51a28ab3f1e8b4577/html5/thumbnails/14.jpg)
Performance e Tunning no dia a dia do desenvolvimento
Chaves Estrangeiras e JOINsChaves 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?
![Page 15: Performance e Tunning - Boas práticas em desenvolvimento](https://reader034.vdocuments.mx/reader034/viewer/2022052700/55a686f51a28ab3f1e8b4577/html5/thumbnails/15.jpg)
Performance e Tunning no dia a dia do desenvolvimento
Chaves Estrangeiras e JOINsChaves 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?
![Page 16: Performance e Tunning - Boas práticas em desenvolvimento](https://reader034.vdocuments.mx/reader034/viewer/2022052700/55a686f51a28ab3f1e8b4577/html5/thumbnails/16.jpg)
Performance e Tunning no dia a dia do desenvolvimento
![Page 17: Performance e Tunning - Boas práticas em desenvolvimento](https://reader034.vdocuments.mx/reader034/viewer/2022052700/55a686f51a28ab3f1e8b4577/html5/thumbnails/17.jpg)
Performance e Tunning no dia a dia do desenvolvimento
Recuperando informações
![Page 18: Performance e Tunning - Boas práticas em desenvolvimento](https://reader034.vdocuments.mx/reader034/viewer/2022052700/55a686f51a28ab3f1e8b4577/html5/thumbnails/18.jpg)
Performance e Tunning no dia a dia do desenvolvimento
Recuperando informações
![Page 19: Performance e Tunning - Boas práticas em desenvolvimento](https://reader034.vdocuments.mx/reader034/viewer/2022052700/55a686f51a28ab3f1e8b4577/html5/thumbnails/19.jpg)
Performance e Tunning no dia a dia do desenvolvimento
Recuperando informaçõesPense em como irá recuperar sua
informação.
![Page 20: Performance e Tunning - Boas práticas em desenvolvimento](https://reader034.vdocuments.mx/reader034/viewer/2022052700/55a686f51a28ab3f1e8b4577/html5/thumbnails/20.jpg)
Performance e Tunning no dia a dia do desenvolvimento
Recuperando informaçõesPense em como irá recuperar sua
informação.Pense em índices para uso em buscas
do sistema e relatórios.
![Page 21: Performance e Tunning - Boas práticas em desenvolvimento](https://reader034.vdocuments.mx/reader034/viewer/2022052700/55a686f51a28ab3f1e8b4577/html5/thumbnails/21.jpg)
Performance e Tunning no dia a dia do desenvolvimento
Recuperando informaçõesPense 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!
![Page 22: Performance e Tunning - Boas práticas em desenvolvimento](https://reader034.vdocuments.mx/reader034/viewer/2022052700/55a686f51a28ab3f1e8b4577/html5/thumbnails/22.jpg)
Performance e Tunning no dia a dia do desenvolvimento
Recuperando informaçõesPense 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.
![Page 23: Performance e Tunning - Boas práticas em desenvolvimento](https://reader034.vdocuments.mx/reader034/viewer/2022052700/55a686f51a28ab3f1e8b4577/html5/thumbnails/23.jpg)
Performance e Tunning no dia a dia do desenvolvimento
Recuperando informaçõesPense 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.
![Page 24: Performance e Tunning - Boas práticas em desenvolvimento](https://reader034.vdocuments.mx/reader034/viewer/2022052700/55a686f51a28ab3f1e8b4577/html5/thumbnails/24.jpg)
Performance e Tunning no dia a dia do desenvolvimento
![Page 25: Performance e Tunning - Boas práticas em desenvolvimento](https://reader034.vdocuments.mx/reader034/viewer/2022052700/55a686f51a28ab3f1e8b4577/html5/thumbnails/25.jpg)
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.
![Page 26: Performance e Tunning - Boas práticas em desenvolvimento](https://reader034.vdocuments.mx/reader034/viewer/2022052700/55a686f51a28ab3f1e8b4577/html5/thumbnails/26.jpg)
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 (??)
![Page 27: Performance e Tunning - Boas práticas em desenvolvimento](https://reader034.vdocuments.mx/reader034/viewer/2022052700/55a686f51a28ab3f1e8b4577/html5/thumbnails/27.jpg)
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.
![Page 28: Performance e Tunning - Boas práticas em desenvolvimento](https://reader034.vdocuments.mx/reader034/viewer/2022052700/55a686f51a28ab3f1e8b4577/html5/thumbnails/28.jpg)
Performance e Tunning no dia a dia do desenvolvimento
CACHE no BD - pode ser seu amigo
![Page 29: Performance e Tunning - Boas práticas em desenvolvimento](https://reader034.vdocuments.mx/reader034/viewer/2022052700/55a686f51a28ab3f1e8b4577/html5/thumbnails/29.jpg)
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
![Page 30: Performance e Tunning - Boas práticas em desenvolvimento](https://reader034.vdocuments.mx/reader034/viewer/2022052700/55a686f51a28ab3f1e8b4577/html5/thumbnails/30.jpg)
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.
![Page 31: Performance e Tunning - Boas práticas em desenvolvimento](https://reader034.vdocuments.mx/reader034/viewer/2022052700/55a686f51a28ab3f1e8b4577/html5/thumbnails/31.jpg)
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
![Page 32: Performance e Tunning - Boas práticas em desenvolvimento](https://reader034.vdocuments.mx/reader034/viewer/2022052700/55a686f51a28ab3f1e8b4577/html5/thumbnails/32.jpg)
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 ?
![Page 33: Performance e Tunning - Boas práticas em desenvolvimento](https://reader034.vdocuments.mx/reader034/viewer/2022052700/55a686f51a28ab3f1e8b4577/html5/thumbnails/33.jpg)
Performance e Tunning no dia a dia do desenvolvimento
![Page 34: Performance e Tunning - Boas práticas em desenvolvimento](https://reader034.vdocuments.mx/reader034/viewer/2022052700/55a686f51a28ab3f1e8b4577/html5/thumbnails/34.jpg)
Performance e Tunning no dia a dia do desenvolvimento
Integrar a equipe de desenvolvimento
![Page 35: Performance e Tunning - Boas práticas em desenvolvimento](https://reader034.vdocuments.mx/reader034/viewer/2022052700/55a686f51a28ab3f1e8b4577/html5/thumbnails/35.jpg)
Performance e Tunning no dia a dia do desenvolvimento
Integrar a equipe de desenvolvimento
Uso objetivo e direto de índices
![Page 36: Performance e Tunning - Boas práticas em desenvolvimento](https://reader034.vdocuments.mx/reader034/viewer/2022052700/55a686f51a28ab3f1e8b4577/html5/thumbnails/36.jpg)
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.
![Page 37: Performance e Tunning - Boas práticas em desenvolvimento](https://reader034.vdocuments.mx/reader034/viewer/2022052700/55a686f51a28ab3f1e8b4577/html5/thumbnails/37.jpg)
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.
![Page 38: Performance e Tunning - Boas práticas em desenvolvimento](https://reader034.vdocuments.mx/reader034/viewer/2022052700/55a686f51a28ab3f1e8b4577/html5/thumbnails/38.jpg)
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
![Page 39: Performance e Tunning - Boas práticas em desenvolvimento](https://reader034.vdocuments.mx/reader034/viewer/2022052700/55a686f51a28ab3f1e8b4577/html5/thumbnails/39.jpg)
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
![Page 40: Performance e Tunning - Boas práticas em desenvolvimento](https://reader034.vdocuments.mx/reader034/viewer/2022052700/55a686f51a28ab3f1e8b4577/html5/thumbnails/40.jpg)
![Page 41: Performance e Tunning - Boas práticas em desenvolvimento](https://reader034.vdocuments.mx/reader034/viewer/2022052700/55a686f51a28ab3f1e8b4577/html5/thumbnails/41.jpg)
Dia normal
![Page 42: Performance e Tunning - Boas práticas em desenvolvimento](https://reader034.vdocuments.mx/reader034/viewer/2022052700/55a686f51a28ab3f1e8b4577/html5/thumbnails/42.jpg)
![Page 43: Performance e Tunning - Boas práticas em desenvolvimento](https://reader034.vdocuments.mx/reader034/viewer/2022052700/55a686f51a28ab3f1e8b4577/html5/thumbnails/43.jpg)
Black Friday 2014
![Page 45: Performance e Tunning - Boas práticas em desenvolvimento](https://reader034.vdocuments.mx/reader034/viewer/2022052700/55a686f51a28ab3f1e8b4577/html5/thumbnails/45.jpg)
Black Friday 2014
E-mail: [email protected]
PERGUNTAS???
Twitter @mmqraposo
marceloraposo.com.br
Estamos em: imaster.com.br
tiespecialistas.com.br
FOI UM PRAZER!