Performance e Tunning - Boas práticas em desenvolvimento

45
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

Transcript of Performance e Tunning - Boas práticas em desenvolvimento

Page 1: Performance e Tunning - Boas práticas em desenvolvimento

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
Page 3: Performance e Tunning - Boas práticas em desenvolvimento

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

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

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

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

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

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

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

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

Performance e Tunning no dia a dia do desenvolvimento

Chaves Estrangeiras e JOINs

Page 12: Performance e Tunning - Boas práticas em desenvolvimento

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

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

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

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

Performance e Tunning no dia a dia do desenvolvimento

Page 17: Performance e Tunning - Boas práticas em desenvolvimento

Performance e Tunning no dia a dia do desenvolvimento

Recuperando informações

Page 18: Performance e Tunning - Boas práticas em desenvolvimento

Performance e Tunning no dia a dia do desenvolvimento

Recuperando informações

Page 19: Performance e Tunning - Boas práticas em desenvolvimento

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

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

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

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

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

Performance e Tunning no dia a dia do desenvolvimento

Page 25: Performance e Tunning - Boas práticas em 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.

Page 26: Performance e Tunning - Boas práticas em 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.

Definir o que buscar e como buscar. Identificar a maior cardinalidade (??)

Page 27: Performance e Tunning - Boas práticas em 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.

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

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

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

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

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

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

Performance e Tunning no dia a dia do desenvolvimento

Page 34: Performance e Tunning - Boas práticas em desenvolvimento

Performance e Tunning no dia a dia do desenvolvimento

Integrar a equipe de desenvolvimento

Page 35: Performance e Tunning - Boas práticas em desenvolvimento

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

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

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

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

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
Page 41: Performance e Tunning - Boas práticas em desenvolvimento

Dia normal

Page 42: Performance e Tunning - Boas práticas em desenvolvimento
Page 43: Performance e Tunning - Boas práticas em desenvolvimento

Black Friday 2014

Page 44: Performance e Tunning - Boas práticas em desenvolvimento

Black Friday 2014

E-mail: [email protected]

PERGUNTAS???

Twitter @mmqraposo

FOI UM PRAZER!

Page 45: Performance e Tunning - Boas práticas em desenvolvimento

Black Friday 2014

E-mail: [email protected]

PERGUNTAS???

Twitter @mmqraposo

marceloraposo.com.br

Estamos em: imaster.com.br

tiespecialistas.com.br

FOI UM PRAZER!