Performance e Tunning - Boas práticas em desenvolvimento

Post on 15-Jul-2015

137 views 1 download

Transcript of 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

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: 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.br

tiespecialistas.com.br

FOI UM PRAZER!