performance e tunning - boas práticas em desenvolvimento
TRANSCRIPT
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
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…
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
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ÁRAAs perguntas do seu cliente…
Mas você disse que funcionaria. Banco de dados?? Você não disse que
este é bom e funcionaria??
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??
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?
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 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
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 JOINsChaves estrangeiras são ótimas e necessárias, crie-as com carinho.
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.
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?
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?
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çõesPense em como irá recuperar sua
informação.
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.
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!
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.
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.
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 milhão de registros.
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 (??)
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.
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. inclusive
MySQL e Oracle
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.
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
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 ?
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 índices
Teste de queries pela equipe de desenvolvimento.
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.
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
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
Dia normal
Black Friday 2014
Black Friday 2014
E-mail: [email protected]
PERGUNTAS???
Twitter @mmqraposo
marceloraposo.com.br
Estamos em: imaster.com.br
tiespecialistas.com.br
FOI UM PRAZER!