SlideShare une entreprise Scribd logo
1  sur  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
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ÁRA
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??
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 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
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árias, crie-as com carinho.
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.
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?
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?
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.
Pense em índices para uso em buscas
do sistema e relatórios.
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!
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.
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.
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!

Contenu connexe

Similaire à Performance e Tunning no dia a dia do desenvolvimento: boas práticas com bancos de dados, por Marcelo Raposo

Reunião01 Pass Chapter - MCITPSC
Reunião01 Pass Chapter - MCITPSCReunião01 Pass Chapter - MCITPSC
Reunião01 Pass Chapter - MCITPSCRodrigo Dornel
 
Reunião #1 – 2015 – Overview
Reunião #1 – 2015 – OverviewReunião #1 – 2015 – Overview
Reunião #1 – 2015 – OverviewRodrigo Dornel
 
Carreira e oportunidades com a plataforma de dados da microsoft
Carreira e oportunidades com a plataforma de dados da microsoftCarreira e oportunidades com a plataforma de dados da microsoft
Carreira e oportunidades com a plataforma de dados da microsoftFabrício França Lima
 
Fabrício Lima Soluções em BD - Portifólio de Serviços
Fabrício Lima Soluções em BD - Portifólio de ServiçosFabrício Lima Soluções em BD - Portifólio de Serviços
Fabrício Lima Soluções em BD - Portifólio de ServiçosFabrício França Lima
 
Evolução cultural: Criando times de alto desempenho no Elo7
Evolução cultural: Criando times de alto desempenho no Elo7Evolução cultural: Criando times de alto desempenho no Elo7
Evolução cultural: Criando times de alto desempenho no Elo7David Robert Camargo de Campos
 
iOpera artigo o que é big data como surgiu o big data para que serve o big data
iOpera artigo o que é big data como surgiu o big data para que serve o big dataiOpera artigo o que é big data como surgiu o big data para que serve o big data
iOpera artigo o que é big data como surgiu o big data para que serve o big dataValêncio Garcia
 
Quero trabalhar na área de dados. Por onde começar?
Quero trabalhar na área de dados. Por onde começar?Quero trabalhar na área de dados. Por onde começar?
Quero trabalhar na área de dados. Por onde começar?Dirceu Resende
 
Matando web forms e modernizando um grande varejista
Matando web forms e modernizando um grande varejistaMatando web forms e modernizando um grande varejista
Matando web forms e modernizando um grande varejistaJosé Roberto Araújo
 
PostgreSQL em projetos de Business Analytics e Big Data Analytics com Pentaho
PostgreSQL em projetos de Business Analytics e Big Data Analytics com PentahoPostgreSQL em projetos de Business Analytics e Big Data Analytics com Pentaho
PostgreSQL em projetos de Business Analytics e Big Data Analytics com PentahoAmbiente Livre
 
OmbrosDeGigantes-TDC2014
OmbrosDeGigantes-TDC2014OmbrosDeGigantes-TDC2014
OmbrosDeGigantes-TDC2014Marcio Marchini
 
Evolução cultural - Criando times de alto desempenho
Evolução cultural - Criando times de alto desempenhoEvolução cultural - Criando times de alto desempenho
Evolução cultural - Criando times de alto desempenhoDavid Robert Camargo de Campos
 
Os pecados mortais de escalabilidade em Drupal e seus efeitos nos negócios - ...
Os pecados mortais de escalabilidade em Drupal e seus efeitos nos negócios - ...Os pecados mortais de escalabilidade em Drupal e seus efeitos nos negócios - ...
Os pecados mortais de escalabilidade em Drupal e seus efeitos nos negócios - ...Taller Negócio Digitais
 
Desenvolvimento Client-Side 2016 (BrazilJS)
Desenvolvimento Client-Side 2016 (BrazilJS)Desenvolvimento Client-Side 2016 (BrazilJS)
Desenvolvimento Client-Side 2016 (BrazilJS)Huge
 
Gerando Resultados com Scrum: Scrum in a nutshell
Gerando Resultados com Scrum: Scrum in a nutshellGerando Resultados com Scrum: Scrum in a nutshell
Gerando Resultados com Scrum: Scrum in a nutshellDextra
 
Como fazer-os-recrutadores-implorarem-para-te-contratar
Como fazer-os-recrutadores-implorarem-para-te-contratarComo fazer-os-recrutadores-implorarem-para-te-contratar
Como fazer-os-recrutadores-implorarem-para-te-contratarKleber Carvalho
 
Scrum in a nutshell - business perspective
Scrum in a nutshell - business perspectiveScrum in a nutshell - business perspective
Scrum in a nutshell - business perspectiveMarcos Alves
 
Pentaho Hadoop Big Data e Data Lakes
Pentaho Hadoop Big Data e Data LakesPentaho Hadoop Big Data e Data Lakes
Pentaho Hadoop Big Data e Data LakesAmbiente Livre
 

Similaire à Performance e Tunning no dia a dia do desenvolvimento: boas práticas com bancos de dados, por Marcelo Raposo (20)

Reunião01 Pass Chapter - MCITPSC
Reunião01 Pass Chapter - MCITPSCReunião01 Pass Chapter - MCITPSC
Reunião01 Pass Chapter - MCITPSC
 
Reunião #1 – 2015 – Overview
Reunião #1 – 2015 – OverviewReunião #1 – 2015 – Overview
Reunião #1 – 2015 – Overview
 
Carreira e oportunidades com a plataforma de dados da microsoft
Carreira e oportunidades com a plataforma de dados da microsoftCarreira e oportunidades com a plataforma de dados da microsoft
Carreira e oportunidades com a plataforma de dados da microsoft
 
Fabrício Lima Soluções em BD - Portifólio de Serviços
Fabrício Lima Soluções em BD - Portifólio de ServiçosFabrício Lima Soluções em BD - Portifólio de Serviços
Fabrício Lima Soluções em BD - Portifólio de Serviços
 
Big data e a globo.com - 2017
Big data e a globo.com - 2017Big data e a globo.com - 2017
Big data e a globo.com - 2017
 
Evolução cultural: Criando times de alto desempenho no Elo7
Evolução cultural: Criando times de alto desempenho no Elo7Evolução cultural: Criando times de alto desempenho no Elo7
Evolução cultural: Criando times de alto desempenho no Elo7
 
iOpera artigo o que é big data como surgiu o big data para que serve o big data
iOpera artigo o que é big data como surgiu o big data para que serve o big dataiOpera artigo o que é big data como surgiu o big data para que serve o big data
iOpera artigo o que é big data como surgiu o big data para que serve o big data
 
Hello NoSQL World
Hello NoSQL WorldHello NoSQL World
Hello NoSQL World
 
Quero trabalhar na área de dados. Por onde começar?
Quero trabalhar na área de dados. Por onde começar?Quero trabalhar na área de dados. Por onde começar?
Quero trabalhar na área de dados. Por onde começar?
 
Matando web forms e modernizando um grande varejista
Matando web forms e modernizando um grande varejistaMatando web forms e modernizando um grande varejista
Matando web forms e modernizando um grande varejista
 
PostgreSQL em projetos de Business Analytics e Big Data Analytics com Pentaho
PostgreSQL em projetos de Business Analytics e Big Data Analytics com PentahoPostgreSQL em projetos de Business Analytics e Big Data Analytics com Pentaho
PostgreSQL em projetos de Business Analytics e Big Data Analytics com Pentaho
 
OmbrosDeGigantes-TDC2014
OmbrosDeGigantes-TDC2014OmbrosDeGigantes-TDC2014
OmbrosDeGigantes-TDC2014
 
Evolução cultural - Criando times de alto desempenho
Evolução cultural - Criando times de alto desempenhoEvolução cultural - Criando times de alto desempenho
Evolução cultural - Criando times de alto desempenho
 
Os pecados mortais de escalabilidade em Drupal e seus efeitos nos negócios - ...
Os pecados mortais de escalabilidade em Drupal e seus efeitos nos negócios - ...Os pecados mortais de escalabilidade em Drupal e seus efeitos nos negócios - ...
Os pecados mortais de escalabilidade em Drupal e seus efeitos nos negócios - ...
 
Desenvolvimento Client-Side 2016 (BrazilJS)
Desenvolvimento Client-Side 2016 (BrazilJS)Desenvolvimento Client-Side 2016 (BrazilJS)
Desenvolvimento Client-Side 2016 (BrazilJS)
 
Bigadata casese opotunidades
Bigadata casese opotunidadesBigadata casese opotunidades
Bigadata casese opotunidades
 
Gerando Resultados com Scrum: Scrum in a nutshell
Gerando Resultados com Scrum: Scrum in a nutshellGerando Resultados com Scrum: Scrum in a nutshell
Gerando Resultados com Scrum: Scrum in a nutshell
 
Como fazer-os-recrutadores-implorarem-para-te-contratar
Como fazer-os-recrutadores-implorarem-para-te-contratarComo fazer-os-recrutadores-implorarem-para-te-contratar
Como fazer-os-recrutadores-implorarem-para-te-contratar
 
Scrum in a nutshell - business perspective
Scrum in a nutshell - business perspectiveScrum in a nutshell - business perspective
Scrum in a nutshell - business perspective
 
Pentaho Hadoop Big Data e Data Lakes
Pentaho Hadoop Big Data e Data LakesPentaho Hadoop Big Data e Data Lakes
Pentaho Hadoop Big Data e Data Lakes
 

Plus de iMasters

O que você precisa saber para modelar bancos de dados NoSQL - Dani Monteiro
O que você precisa saber para modelar bancos de dados NoSQL - Dani MonteiroO que você precisa saber para modelar bancos de dados NoSQL - Dani Monteiro
O que você precisa saber para modelar bancos de dados NoSQL - Dani MonteiroiMasters
 
Postgres: wanted, beloved or dreaded? - Fabio Telles
Postgres: wanted, beloved or dreaded? - Fabio TellesPostgres: wanted, beloved or dreaded? - Fabio Telles
Postgres: wanted, beloved or dreaded? - Fabio TellesiMasters
 
Por que minha query esta lenta? - Suellen Moraes
Por que minha query esta lenta? - Suellen MoraesPor que minha query esta lenta? - Suellen Moraes
Por que minha query esta lenta? - Suellen MoraesiMasters
 
Relato das trincheiras: o dia a dia de uma consultoria de banco de dados - Ig...
Relato das trincheiras: o dia a dia de uma consultoria de banco de dados - Ig...Relato das trincheiras: o dia a dia de uma consultoria de banco de dados - Ig...
Relato das trincheiras: o dia a dia de uma consultoria de banco de dados - Ig...iMasters
 
ORMs heróis ou vilões dentro da arquitetura de dados? - Otávio gonçalves
ORMs heróis ou vilões dentro da arquitetura de dados? - Otávio gonçalvesORMs heróis ou vilões dentro da arquitetura de dados? - Otávio gonçalves
ORMs heróis ou vilões dentro da arquitetura de dados? - Otávio gonçalvesiMasters
 
SQL e NoSQL trabalhando juntos: uma comparação para obter o melhor de ambos -...
SQL e NoSQL trabalhando juntos: uma comparação para obter o melhor de ambos -...SQL e NoSQL trabalhando juntos: uma comparação para obter o melhor de ambos -...
SQL e NoSQL trabalhando juntos: uma comparação para obter o melhor de ambos -...iMasters
 
Arquitetando seus dados na prática para a LGPD - Alessandra Martins
Arquitetando seus dados na prática para a LGPD - Alessandra MartinsArquitetando seus dados na prática para a LGPD - Alessandra Martins
Arquitetando seus dados na prática para a LGPD - Alessandra MartinsiMasters
 
O papel do DBA no mundo de ciência de dados e machine learning - Mauro Pichil...
O papel do DBA no mundo de ciência de dados e machine learning - Mauro Pichil...O papel do DBA no mundo de ciência de dados e machine learning - Mauro Pichil...
O papel do DBA no mundo de ciência de dados e machine learning - Mauro Pichil...iMasters
 
Desenvolvimento Mobile Híbrido, Nativo ou Web: Quando usá-los - Juliana Chahoud
Desenvolvimento Mobile Híbrido, Nativo ou Web: Quando usá-los - Juliana ChahoudDesenvolvimento Mobile Híbrido, Nativo ou Web: Quando usá-los - Juliana Chahoud
Desenvolvimento Mobile Híbrido, Nativo ou Web: Quando usá-los - Juliana ChahoudiMasters
 
Use MDD e faça as máquinas trabalharem para você - Andreza Leite
 Use MDD e faça as máquinas trabalharem para você - Andreza Leite Use MDD e faça as máquinas trabalharem para você - Andreza Leite
Use MDD e faça as máquinas trabalharem para você - Andreza LeiteiMasters
 
Entendendo os porquês do seu servidor - Talita Bernardes
Entendendo os porquês do seu servidor - Talita BernardesEntendendo os porquês do seu servidor - Talita Bernardes
Entendendo os porquês do seu servidor - Talita BernardesiMasters
 
Backend performático além do "coloca mais máquina lá" - Diana Arnos
Backend performático além do "coloca mais máquina lá" - Diana ArnosBackend performático além do "coloca mais máquina lá" - Diana Arnos
Backend performático além do "coloca mais máquina lá" - Diana ArnosiMasters
 
Dicas para uma maior performance em APIs REST - Renato Groffe
Dicas para uma maior performance em APIs REST - Renato GroffeDicas para uma maior performance em APIs REST - Renato Groffe
Dicas para uma maior performance em APIs REST - Renato GroffeiMasters
 
7 dicas de desempenho que equivalem por 21 - Danielle Monteiro
7 dicas de desempenho que equivalem por 21 - Danielle Monteiro7 dicas de desempenho que equivalem por 21 - Danielle Monteiro
7 dicas de desempenho que equivalem por 21 - Danielle MonteiroiMasters
 
Quem se importa com acessibilidade Web? - Mauricio Maujor
Quem se importa com acessibilidade Web? - Mauricio MaujorQuem se importa com acessibilidade Web? - Mauricio Maujor
Quem se importa com acessibilidade Web? - Mauricio MaujoriMasters
 
Service Mesh com Istio e Kubernetes - Wellington Figueira da Silva
Service Mesh com Istio e Kubernetes - Wellington Figueira da SilvaService Mesh com Istio e Kubernetes - Wellington Figueira da Silva
Service Mesh com Istio e Kubernetes - Wellington Figueira da SilvaiMasters
 
Erros: Como eles vivem, se alimentam e se reproduzem? - Augusto Pascutti
Erros: Como eles vivem, se alimentam e se reproduzem? - Augusto PascuttiErros: Como eles vivem, se alimentam e se reproduzem? - Augusto Pascutti
Erros: Como eles vivem, se alimentam e se reproduzem? - Augusto PascuttiiMasters
 
Elasticidade e engenharia de banco de dados para alta performance - Rubens G...
Elasticidade e engenharia de banco de dados para alta performance  - Rubens G...Elasticidade e engenharia de banco de dados para alta performance  - Rubens G...
Elasticidade e engenharia de banco de dados para alta performance - Rubens G...iMasters
 
Construindo aplicações mais confiantes - Carolina Karklis
Construindo aplicações mais confiantes - Carolina KarklisConstruindo aplicações mais confiantes - Carolina Karklis
Construindo aplicações mais confiantes - Carolina KarklisiMasters
 
Monitoramento de Aplicações - Felipe Regalgo
Monitoramento de Aplicações - Felipe RegalgoMonitoramento de Aplicações - Felipe Regalgo
Monitoramento de Aplicações - Felipe RegalgoiMasters
 

Plus de iMasters (20)

O que você precisa saber para modelar bancos de dados NoSQL - Dani Monteiro
O que você precisa saber para modelar bancos de dados NoSQL - Dani MonteiroO que você precisa saber para modelar bancos de dados NoSQL - Dani Monteiro
O que você precisa saber para modelar bancos de dados NoSQL - Dani Monteiro
 
Postgres: wanted, beloved or dreaded? - Fabio Telles
Postgres: wanted, beloved or dreaded? - Fabio TellesPostgres: wanted, beloved or dreaded? - Fabio Telles
Postgres: wanted, beloved or dreaded? - Fabio Telles
 
Por que minha query esta lenta? - Suellen Moraes
Por que minha query esta lenta? - Suellen MoraesPor que minha query esta lenta? - Suellen Moraes
Por que minha query esta lenta? - Suellen Moraes
 
Relato das trincheiras: o dia a dia de uma consultoria de banco de dados - Ig...
Relato das trincheiras: o dia a dia de uma consultoria de banco de dados - Ig...Relato das trincheiras: o dia a dia de uma consultoria de banco de dados - Ig...
Relato das trincheiras: o dia a dia de uma consultoria de banco de dados - Ig...
 
ORMs heróis ou vilões dentro da arquitetura de dados? - Otávio gonçalves
ORMs heróis ou vilões dentro da arquitetura de dados? - Otávio gonçalvesORMs heróis ou vilões dentro da arquitetura de dados? - Otávio gonçalves
ORMs heróis ou vilões dentro da arquitetura de dados? - Otávio gonçalves
 
SQL e NoSQL trabalhando juntos: uma comparação para obter o melhor de ambos -...
SQL e NoSQL trabalhando juntos: uma comparação para obter o melhor de ambos -...SQL e NoSQL trabalhando juntos: uma comparação para obter o melhor de ambos -...
SQL e NoSQL trabalhando juntos: uma comparação para obter o melhor de ambos -...
 
Arquitetando seus dados na prática para a LGPD - Alessandra Martins
Arquitetando seus dados na prática para a LGPD - Alessandra MartinsArquitetando seus dados na prática para a LGPD - Alessandra Martins
Arquitetando seus dados na prática para a LGPD - Alessandra Martins
 
O papel do DBA no mundo de ciência de dados e machine learning - Mauro Pichil...
O papel do DBA no mundo de ciência de dados e machine learning - Mauro Pichil...O papel do DBA no mundo de ciência de dados e machine learning - Mauro Pichil...
O papel do DBA no mundo de ciência de dados e machine learning - Mauro Pichil...
 
Desenvolvimento Mobile Híbrido, Nativo ou Web: Quando usá-los - Juliana Chahoud
Desenvolvimento Mobile Híbrido, Nativo ou Web: Quando usá-los - Juliana ChahoudDesenvolvimento Mobile Híbrido, Nativo ou Web: Quando usá-los - Juliana Chahoud
Desenvolvimento Mobile Híbrido, Nativo ou Web: Quando usá-los - Juliana Chahoud
 
Use MDD e faça as máquinas trabalharem para você - Andreza Leite
 Use MDD e faça as máquinas trabalharem para você - Andreza Leite Use MDD e faça as máquinas trabalharem para você - Andreza Leite
Use MDD e faça as máquinas trabalharem para você - Andreza Leite
 
Entendendo os porquês do seu servidor - Talita Bernardes
Entendendo os porquês do seu servidor - Talita BernardesEntendendo os porquês do seu servidor - Talita Bernardes
Entendendo os porquês do seu servidor - Talita Bernardes
 
Backend performático além do "coloca mais máquina lá" - Diana Arnos
Backend performático além do "coloca mais máquina lá" - Diana ArnosBackend performático além do "coloca mais máquina lá" - Diana Arnos
Backend performático além do "coloca mais máquina lá" - Diana Arnos
 
Dicas para uma maior performance em APIs REST - Renato Groffe
Dicas para uma maior performance em APIs REST - Renato GroffeDicas para uma maior performance em APIs REST - Renato Groffe
Dicas para uma maior performance em APIs REST - Renato Groffe
 
7 dicas de desempenho que equivalem por 21 - Danielle Monteiro
7 dicas de desempenho que equivalem por 21 - Danielle Monteiro7 dicas de desempenho que equivalem por 21 - Danielle Monteiro
7 dicas de desempenho que equivalem por 21 - Danielle Monteiro
 
Quem se importa com acessibilidade Web? - Mauricio Maujor
Quem se importa com acessibilidade Web? - Mauricio MaujorQuem se importa com acessibilidade Web? - Mauricio Maujor
Quem se importa com acessibilidade Web? - Mauricio Maujor
 
Service Mesh com Istio e Kubernetes - Wellington Figueira da Silva
Service Mesh com Istio e Kubernetes - Wellington Figueira da SilvaService Mesh com Istio e Kubernetes - Wellington Figueira da Silva
Service Mesh com Istio e Kubernetes - Wellington Figueira da Silva
 
Erros: Como eles vivem, se alimentam e se reproduzem? - Augusto Pascutti
Erros: Como eles vivem, se alimentam e se reproduzem? - Augusto PascuttiErros: Como eles vivem, se alimentam e se reproduzem? - Augusto Pascutti
Erros: Como eles vivem, se alimentam e se reproduzem? - Augusto Pascutti
 
Elasticidade e engenharia de banco de dados para alta performance - Rubens G...
Elasticidade e engenharia de banco de dados para alta performance  - Rubens G...Elasticidade e engenharia de banco de dados para alta performance  - Rubens G...
Elasticidade e engenharia de banco de dados para alta performance - Rubens G...
 
Construindo aplicações mais confiantes - Carolina Karklis
Construindo aplicações mais confiantes - Carolina KarklisConstruindo aplicações mais confiantes - Carolina Karklis
Construindo aplicações mais confiantes - Carolina Karklis
 
Monitoramento de Aplicações - Felipe Regalgo
Monitoramento de Aplicações - Felipe RegalgoMonitoramento de Aplicações - Felipe Regalgo
Monitoramento de Aplicações - Felipe Regalgo
 

Performance e Tunning no dia a dia do desenvolvimento: boas práticas com bancos de dados, por Marcelo Raposo

  • 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.
  • 3. 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…
  • 4. 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
  • 5. Você criou um sistema? E tudo funciona… E AS TABELAS CRESCEM… Até que um dia, sem muitos avisos… o SISTEMA PÁRA
  • 6. 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??
  • 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??
  • 8. 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?
  • 9. Performance e Tunning no dia a dia do desenvolvimento Tamanho importa - pense em seus campos
  • 10. 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
  • 11. Performance e Tunning no dia a dia do desenvolvimento Chaves Estrangeiras e JOINs
  • 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.
  • 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.
  • 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. JOINs, restrições de operações, evitam registros órfãos. INNER JOIN, LEFT JOIN, RIGTH JOIN - quando usar?
  • 15. 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?
  • 16. Performance e Tunning no dia a dia do desenvolvimento
  • 17. Performance e Tunning no dia a dia do desenvolvimento Recuperando informações
  • 18. Performance e Tunning no dia a dia do desenvolvimento Recuperando informações
  • 19. Performance e Tunning no dia a dia do desenvolvimento Recuperando informações Pense em como irá recuperar sua informação.
  • 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.
  • 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!
  • 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. Não crie um índice para cada campo! Um índice pode ter vários campos, se for usado na ordem correta.
  • 23. 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.
  • 24. Performance e Tunning no dia a dia do desenvolvimento
  • 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.
  • 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 (??)
  • 27. 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.
  • 28. Performance e Tunning no dia a dia do desenvolvimento CACHE no BD - pode ser seu amigo
  • 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
  • 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.
  • 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
  • 32. 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 ?
  • 33. Performance e Tunning no dia a dia do desenvolvimento
  • 34. Performance e Tunning no dia a dia do desenvolvimento Integrar a equipe de desenvolvimento
  • 35. Performance e Tunning no dia a dia do desenvolvimento Integrar a equipe de desenvolvimento Uso objetivo e direto de índices
  • 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.
  • 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.
  • 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
  • 39. 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
  • 40.
  • 42.