SlideShare uma empresa Scribd logo

Postgres Big data

trabalhando com bases além do 1TB no PostgreSQL. Palestra realizada junto com o Fabrízio de Royes Mello no PGBR2013

1 de 27
Baixar para ler offline
Postgres Big Data
trabalhando com bases al´em do 1TB no PostgreSQL
F´abio Telles Rodriguez e Fabr´ızio de Royes Mello
Timbira - A empresa brasileira de PostgreSQL
16 de agosto de 2013
Apresenta¸c˜ao
F´abio Telles Rodrigues
DBA Oracle e PostgreSQL +10 anos
Colaborador Comunidade Brasileira de PostgreSQL
Blog: http://savepoint.blog.br
@telles
Fabr´ızio de Royes Mello
DBA PostgreSQL +10 anos
Colaborador Comunidade Brasileira de PostgreSQL
Colaborador PostgreSQL Global Development Group
Blog: http://fabriziomello.blogspot.com
@fabriziomello
Timbira
http://www.timbira.com.br
A empresa Brasileira de PostgreSQL
Consultoria / Desenvolvimento
Planos de Suporte
Parcerias com Empresas Desenvolvedoras de Software
Treinamentos In-Company e On-Line
Corre¸c˜ao de bugs no PostgreSQL garantida em contrato
Sobre esta apresenta¸c˜ao
esta apresenta¸c˜ao est´a dispon´ıvel em:
http://www.timbira.com.br/material
esta apresenta¸c˜ao est´a sob licen¸ca Creative Commons
Atribui¸c˜ao 3.0 Brasil:
http://creativecommons.org/licenses/by/3.0/br
Sobre o que estamos falando?
Figura : Metrˆo - SP / Esta¸c˜ao S´e
Sobre o que N˜AO estamos falando?
Map/Reduce
Hadoop e tecnologias similares
Camada de aplica¸c˜ao
Cluster e Replica¸c˜ao
DW

Recomendados

Mais conteúdo relacionado

Mais procurados

Aumente a performance de seu site de maneira disciplinada
Aumente a performance de seu site de maneira disciplinadaAumente a performance de seu site de maneira disciplinada
Aumente a performance de seu site de maneira disciplinadaHenrique Lima
 
PostgreSQL Tuning: O elefante mais rápido que um leopardo
PostgreSQL Tuning: O elefante mais rápido que um leopardoPostgreSQL Tuning: O elefante mais rápido que um leopardo
PostgreSQL Tuning: O elefante mais rápido que um leopardoelliando dias
 
Tunning PostgreSQL em modo OGRO - 13º Latinoware
Tunning PostgreSQL em modo OGRO - 13º LatinowareTunning PostgreSQL em modo OGRO - 13º Latinoware
Tunning PostgreSQL em modo OGRO - 13º LatinowareGerdan Santos
 
Tuning Apache/MySQL/PHP para desenvolvedores
Tuning Apache/MySQL/PHP para desenvolvedoresTuning Apache/MySQL/PHP para desenvolvedores
Tuning Apache/MySQL/PHP para desenvolvedoresDouglas V. Pasqua
 
Backup 101 - Jerônimo Medina Madruga
Backup 101 - Jerônimo Medina MadrugaBackup 101 - Jerônimo Medina Madruga
Backup 101 - Jerônimo Medina MadrugaTchelinux
 
Alto desempenho com banco de dados MySQL
Alto desempenho com banco de dados MySQLAlto desempenho com banco de dados MySQL
Alto desempenho com banco de dados MySQLJonas Silveira
 
A Arte do Deployment - WebDevCamp
A Arte do Deployment - WebDevCampA Arte do Deployment - WebDevCamp
A Arte do Deployment - WebDevCampGeorge Guimarães
 
Ruby no tucupi e Rails com farinha
Ruby no tucupi e Rails com farinhaRuby no tucupi e Rails com farinha
Ruby no tucupi e Rails com farinhas4nx
 
Isolamento e mvcc
Isolamento e mvccIsolamento e mvcc
Isolamento e mvccLocaweb
 
Tutorial do shell script para criar imagens de HDs Win7 usando Linux
Tutorial do shell script para criar imagens de HDs Win7 usando LinuxTutorial do shell script para criar imagens de HDs Win7 usando Linux
Tutorial do shell script para criar imagens de HDs Win7 usando LinuxLuiz Francisco Bozo
 
Tutorial do shell script para Clonar HDs WIN7 usando Linux
Tutorial do shell script para Clonar HDs WIN7 usando LinuxTutorial do shell script para Clonar HDs WIN7 usando Linux
Tutorial do shell script para Clonar HDs WIN7 usando LinuxLuiz Francisco Bozo
 
Ferramentas para infraestrutura ágil
Ferramentas para infraestrutura ágilFerramentas para infraestrutura ágil
Ferramentas para infraestrutura ágilJose Augusto Carvalho
 
Faça seu próprio servidor pirata com OpenVZ
Faça seu próprio servidor pirata com OpenVZFaça seu próprio servidor pirata com OpenVZ
Faça seu próprio servidor pirata com OpenVZRicardo Bánffy
 
Git commits - como, quando e por quê?
Git commits - como, quando e por quê?Git commits - como, quando e por quê?
Git commits - como, quando e por quê?viniciusban
 
PostgreSQL: Conceitos e aplicações
PostgreSQL: Conceitos e aplicaçõesPostgreSQL: Conceitos e aplicações
PostgreSQL: Conceitos e aplicaçõesFernando Ike
 

Mais procurados (20)

Aumente a performance de seu site de maneira disciplinada
Aumente a performance de seu site de maneira disciplinadaAumente a performance de seu site de maneira disciplinada
Aumente a performance de seu site de maneira disciplinada
 
PostgreSQL Tuning: O elefante mais rápido que um leopardo
PostgreSQL Tuning: O elefante mais rápido que um leopardoPostgreSQL Tuning: O elefante mais rápido que um leopardo
PostgreSQL Tuning: O elefante mais rápido que um leopardo
 
Tunning PostgreSQL em modo OGRO - 13º Latinoware
Tunning PostgreSQL em modo OGRO - 13º LatinowareTunning PostgreSQL em modo OGRO - 13º Latinoware
Tunning PostgreSQL em modo OGRO - 13º Latinoware
 
Drupal + Rex
Drupal + RexDrupal + Rex
Drupal + Rex
 
Tuning Apache/MySQL/PHP para desenvolvedores
Tuning Apache/MySQL/PHP para desenvolvedoresTuning Apache/MySQL/PHP para desenvolvedores
Tuning Apache/MySQL/PHP para desenvolvedores
 
Backup 101 - Jerônimo Medina Madruga
Backup 101 - Jerônimo Medina MadrugaBackup 101 - Jerônimo Medina Madruga
Backup 101 - Jerônimo Medina Madruga
 
Roteiro vsftpd
Roteiro vsftpdRoteiro vsftpd
Roteiro vsftpd
 
Alto desempenho com banco de dados MySQL
Alto desempenho com banco de dados MySQLAlto desempenho com banco de dados MySQL
Alto desempenho com banco de dados MySQL
 
A Arte do Deployment - WebDevCamp
A Arte do Deployment - WebDevCampA Arte do Deployment - WebDevCamp
A Arte do Deployment - WebDevCamp
 
Ruby no tucupi e Rails com farinha
Ruby no tucupi e Rails com farinhaRuby no tucupi e Rails com farinha
Ruby no tucupi e Rails com farinha
 
Trabalhando com Módulos no Puppet
Trabalhando com Módulos no PuppetTrabalhando com Módulos no Puppet
Trabalhando com Módulos no Puppet
 
Cabra Macho
Cabra MachoCabra Macho
Cabra Macho
 
Isolamento e mvcc
Isolamento e mvccIsolamento e mvcc
Isolamento e mvcc
 
Tutorial do shell script para criar imagens de HDs Win7 usando Linux
Tutorial do shell script para criar imagens de HDs Win7 usando LinuxTutorial do shell script para criar imagens de HDs Win7 usando Linux
Tutorial do shell script para criar imagens de HDs Win7 usando Linux
 
Tutorial do shell script para Clonar HDs WIN7 usando Linux
Tutorial do shell script para Clonar HDs WIN7 usando LinuxTutorial do shell script para Clonar HDs WIN7 usando Linux
Tutorial do shell script para Clonar HDs WIN7 usando Linux
 
Ferramentas para infraestrutura ágil
Ferramentas para infraestrutura ágilFerramentas para infraestrutura ágil
Ferramentas para infraestrutura ágil
 
Faça seu próprio servidor pirata com OpenVZ
Faça seu próprio servidor pirata com OpenVZFaça seu próprio servidor pirata com OpenVZ
Faça seu próprio servidor pirata com OpenVZ
 
Aula CRONTAB
Aula CRONTABAula CRONTAB
Aula CRONTAB
 
Git commits - como, quando e por quê?
Git commits - como, quando e por quê?Git commits - como, quando e por quê?
Git commits - como, quando e por quê?
 
PostgreSQL: Conceitos e aplicações
PostgreSQL: Conceitos e aplicaçõesPostgreSQL: Conceitos e aplicações
PostgreSQL: Conceitos e aplicações
 

Semelhante a Postgres Big data

Mongo Db - PHP Day Workshop
Mongo Db - PHP Day WorkshopMongo Db - PHP Day Workshop
Mongo Db - PHP Day WorkshopDiego Sana
 
Path to the future #5 - Melhores práticas de data warehouse no Amazon Redshift
Path to the future #5 - Melhores práticas de data warehouse no Amazon RedshiftPath to the future #5 - Melhores práticas de data warehouse no Amazon Redshift
Path to the future #5 - Melhores práticas de data warehouse no Amazon RedshiftAmazon Web Services LATAM
 
Sessão Avançada: Amazon Aurora - DAT302 - Sao Paulo Summit
Sessão Avançada: Amazon Aurora -  DAT302 - Sao Paulo SummitSessão Avançada: Amazon Aurora -  DAT302 - Sao Paulo Summit
Sessão Avançada: Amazon Aurora - DAT302 - Sao Paulo SummitAmazon Web Services
 
MySQL - Wagner Bonfiglio - Navegg
MySQL - Wagner Bonfiglio - NaveggMySQL - Wagner Bonfiglio - Navegg
MySQL - Wagner Bonfiglio - NaveggFelipe Guimarães
 
Solisc2009 Migrando de Oracle para Postgresql
Solisc2009 Migrando de Oracle para PostgresqlSolisc2009 Migrando de Oracle para Postgresql
Solisc2009 Migrando de Oracle para PostgresqlLeonardo Medeiros Martins
 
Mais performance com o MySQL 5.6
Mais performance com o MySQL 5.6Mais performance com o MySQL 5.6
Mais performance com o MySQL 5.6MySQL Brasil
 
Minicurso PostgreSQl
Minicurso PostgreSQlMinicurso PostgreSQl
Minicurso PostgreSQlCezar Souza
 
Bad Smells em Bancos de Dados
Bad Smells em Bancos de DadosBad Smells em Bancos de Dados
Bad Smells em Bancos de DadosFabrízio Mello
 
24HOP Session - Database Administration Strategies
24HOP Session - Database Administration Strategies24HOP Session - Database Administration Strategies
24HOP Session - Database Administration StrategiesMurilo Miranda
 
PHP Conference 2014: Uma string em dez milhões de documentos em menos de um s...
PHP Conference 2014: Uma string em dez milhões de documentos em menos de um s...PHP Conference 2014: Uma string em dez milhões de documentos em menos de um s...
PHP Conference 2014: Uma string em dez milhões de documentos em menos de um s...Aryel Tupinambá
 

Semelhante a Postgres Big data (20)

Mongo Db - PHP Day Workshop
Mongo Db - PHP Day WorkshopMongo Db - PHP Day Workshop
Mongo Db - PHP Day Workshop
 
Discos & Cia em PostgreSQL
Discos & Cia em PostgreSQLDiscos & Cia em PostgreSQL
Discos & Cia em PostgreSQL
 
Path to the future #5 - Melhores práticas de data warehouse no Amazon Redshift
Path to the future #5 - Melhores práticas de data warehouse no Amazon RedshiftPath to the future #5 - Melhores práticas de data warehouse no Amazon Redshift
Path to the future #5 - Melhores práticas de data warehouse no Amazon Redshift
 
Db2
Db2Db2
Db2
 
Sessão Avançada: Amazon Aurora - DAT302 - Sao Paulo Summit
Sessão Avançada: Amazon Aurora -  DAT302 - Sao Paulo SummitSessão Avançada: Amazon Aurora -  DAT302 - Sao Paulo Summit
Sessão Avançada: Amazon Aurora - DAT302 - Sao Paulo Summit
 
TechEd_OFC302
TechEd_OFC302TechEd_OFC302
TechEd_OFC302
 
Hardware aula5
Hardware aula5Hardware aula5
Hardware aula5
 
NoSQL Livre
NoSQL LivreNoSQL Livre
NoSQL Livre
 
SQLSat #127
SQLSat #127SQLSat #127
SQLSat #127
 
Deep dive com Amazon Aurora
Deep dive com Amazon AuroraDeep dive com Amazon Aurora
Deep dive com Amazon Aurora
 
MySQL - Workshop Buscapé
MySQL - Workshop BuscapéMySQL - Workshop Buscapé
MySQL - Workshop Buscapé
 
MySQL - Wagner Bonfiglio - Navegg
MySQL - Wagner Bonfiglio - NaveggMySQL - Wagner Bonfiglio - Navegg
MySQL - Wagner Bonfiglio - Navegg
 
pgDay Campinas – 2015
pgDay Campinas – 2015pgDay Campinas – 2015
pgDay Campinas – 2015
 
Solisc2009 Migrando de Oracle para Postgresql
Solisc2009 Migrando de Oracle para PostgresqlSolisc2009 Migrando de Oracle para Postgresql
Solisc2009 Migrando de Oracle para Postgresql
 
Mais performance com o MySQL 5.6
Mais performance com o MySQL 5.6Mais performance com o MySQL 5.6
Mais performance com o MySQL 5.6
 
Minicurso PostgreSQl
Minicurso PostgreSQlMinicurso PostgreSQl
Minicurso PostgreSQl
 
Bad Smells em Bancos de Dados
Bad Smells em Bancos de DadosBad Smells em Bancos de Dados
Bad Smells em Bancos de Dados
 
24HOP Session - Database Administration Strategies
24HOP Session - Database Administration Strategies24HOP Session - Database Administration Strategies
24HOP Session - Database Administration Strategies
 
PHP Conference 2014: Uma string em dez milhões de documentos em menos de um s...
PHP Conference 2014: Uma string em dez milhões de documentos em menos de um s...PHP Conference 2014: Uma string em dez milhões de documentos em menos de um s...
PHP Conference 2014: Uma string em dez milhões de documentos em menos de um s...
 
MySQL - the database
MySQL - the databaseMySQL - the database
MySQL - the database
 

Mais de Fabio Telles Rodriguez

Data Hero: Sua carreira na área de dados
Data Hero: Sua carreira na área de dadosData Hero: Sua carreira na área de dados
Data Hero: Sua carreira na área de dadosFabio Telles Rodriguez
 
Aplicações 10x a 100x mais rápida com o postgre sql
Aplicações 10x a 100x mais rápida com o postgre sqlAplicações 10x a 100x mais rápida com o postgre sql
Aplicações 10x a 100x mais rápida com o postgre sqlFabio Telles Rodriguez
 
Migre seu banco de dados para a nuvem. Pergunte-me como!
Migre seu banco de dados para a nuvem. Pergunte-me como!Migre seu banco de dados para a nuvem. Pergunte-me como!
Migre seu banco de dados para a nuvem. Pergunte-me como!Fabio Telles Rodriguez
 
Postgres Wonderland - Campus Party 2013
Postgres Wonderland - Campus Party 2013Postgres Wonderland - Campus Party 2013
Postgres Wonderland - Campus Party 2013Fabio Telles Rodriguez
 
Postgres Wonderland - PGDay Cascavél 2013
Postgres Wonderland - PGDay Cascavél 2013Postgres Wonderland - PGDay Cascavél 2013
Postgres Wonderland - PGDay Cascavél 2013Fabio Telles Rodriguez
 
Tutorial para criação de módulo no Xoops 2.4
Tutorial para criação de módulo no Xoops 2.4Tutorial para criação de módulo no Xoops 2.4
Tutorial para criação de módulo no Xoops 2.4Fabio Telles Rodriguez
 

Mais de Fabio Telles Rodriguez (20)

Data Hero: Sua carreira na área de dados
Data Hero: Sua carreira na área de dadosData Hero: Sua carreira na área de dados
Data Hero: Sua carreira na área de dados
 
Postgres level up
Postgres level upPostgres level up
Postgres level up
 
Explain this!
Explain this!Explain this!
Explain this!
 
High concurrency with Postgres
High concurrency with PostgresHigh concurrency with Postgres
High concurrency with Postgres
 
Aplicações 10x a 100x mais rápida com o postgre sql
Aplicações 10x a 100x mais rápida com o postgre sqlAplicações 10x a 100x mais rápida com o postgre sql
Aplicações 10x a 100x mais rápida com o postgre sql
 
Novidades do PostgreSQL 10
Novidades do  PostgreSQL 10Novidades do  PostgreSQL 10
Novidades do PostgreSQL 10
 
Migre seu banco de dados para a nuvem. Pergunte-me como!
Migre seu banco de dados para a nuvem. Pergunte-me como!Migre seu banco de dados para a nuvem. Pergunte-me como!
Migre seu banco de dados para a nuvem. Pergunte-me como!
 
Oracle x PostgreSQL
Oracle x PostgreSQLOracle x PostgreSQL
Oracle x PostgreSQL
 
PostgreSQL Wonderland TDC-SP 2015
PostgreSQL Wonderland TDC-SP 2015PostgreSQL Wonderland TDC-SP 2015
PostgreSQL Wonderland TDC-SP 2015
 
Postgres Chainsaw Massacre
Postgres Chainsaw MassacrePostgres Chainsaw Massacre
Postgres Chainsaw Massacre
 
Postgres Wonderland - PGDay CE2013
Postgres  Wonderland - PGDay CE2013Postgres  Wonderland - PGDay CE2013
Postgres Wonderland - PGDay CE2013
 
Postgres Wonderland - Campus Party 2013
Postgres Wonderland - Campus Party 2013Postgres Wonderland - Campus Party 2013
Postgres Wonderland - Campus Party 2013
 
Alta Concorrência com Postgres
Alta Concorrência com PostgresAlta Concorrência com Postgres
Alta Concorrência com Postgres
 
Postgres, a "Metamorfose Ambulante"
Postgres, a "Metamorfose Ambulante"Postgres, a "Metamorfose Ambulante"
Postgres, a "Metamorfose Ambulante"
 
Postgres Wonderland - PGDay Cascavél 2013
Postgres Wonderland - PGDay Cascavél 2013Postgres Wonderland - PGDay Cascavél 2013
Postgres Wonderland - PGDay Cascavél 2013
 
Conceitos E Aplicações
Conceitos E AplicaçõesConceitos E Aplicações
Conceitos E Aplicações
 
PostgreSQL, o Elefante Encouraçado
PostgreSQL, o Elefante EncouraçadoPostgreSQL, o Elefante Encouraçado
PostgreSQL, o Elefante Encouraçado
 
Tutorial para criação de módulo no Xoops 2.4
Tutorial para criação de módulo no Xoops 2.4Tutorial para criação de módulo no Xoops 2.4
Tutorial para criação de módulo no Xoops 2.4
 
Revisão do postgresql.conf
Revisão do postgresql.confRevisão do postgresql.conf
Revisão do postgresql.conf
 
Storage em Oracle RAC
Storage em Oracle RACStorage em Oracle RAC
Storage em Oracle RAC
 

Postgres Big data

  • 1. Postgres Big Data trabalhando com bases al´em do 1TB no PostgreSQL F´abio Telles Rodriguez e Fabr´ızio de Royes Mello Timbira - A empresa brasileira de PostgreSQL 16 de agosto de 2013
  • 2. Apresenta¸c˜ao F´abio Telles Rodrigues DBA Oracle e PostgreSQL +10 anos Colaborador Comunidade Brasileira de PostgreSQL Blog: http://savepoint.blog.br @telles Fabr´ızio de Royes Mello DBA PostgreSQL +10 anos Colaborador Comunidade Brasileira de PostgreSQL Colaborador PostgreSQL Global Development Group Blog: http://fabriziomello.blogspot.com @fabriziomello
  • 3. Timbira http://www.timbira.com.br A empresa Brasileira de PostgreSQL Consultoria / Desenvolvimento Planos de Suporte Parcerias com Empresas Desenvolvedoras de Software Treinamentos In-Company e On-Line Corre¸c˜ao de bugs no PostgreSQL garantida em contrato
  • 4. Sobre esta apresenta¸c˜ao esta apresenta¸c˜ao est´a dispon´ıvel em: http://www.timbira.com.br/material esta apresenta¸c˜ao est´a sob licen¸ca Creative Commons Atribui¸c˜ao 3.0 Brasil: http://creativecommons.org/licenses/by/3.0/br
  • 5. Sobre o que estamos falando? Figura : Metrˆo - SP / Esta¸c˜ao S´e
  • 6. Sobre o que N˜AO estamos falando? Map/Reduce Hadoop e tecnologias similares Camada de aplica¸c˜ao Cluster e Replica¸c˜ao DW
  • 7. Sobre o que estamos falando? Big Data: ´E uma buzzword que serve para vender: hardware, licen¸cas, cursos, livros, etc... Bases com mais de 1TB; Tabelas e/ou ´ındices com mais de 100GB; Consultas com bilh˜oes de registros envolvidos; Crescimento de v´arios GBs por dia; Relat´orios e cargas em lote com janelas invi´aveis.
  • 8. Mantra Em Big Data n˜ao existe solu¸c˜ao ´otima, boa ou regular, existe a ”menos pior”!!
  • 9. Espa¸co em Disco Imagine uma base de 1TB 20% crescimento ao ano = 1,75TB em 3 anos Espa¸co para backup = 3,5TB 250GB de archive = 3,75TB 500GB de ´area de manobra = 4,25TB 20% de margem de seguran¸ca = 5,1TB RAID 1 = 10,2TB
  • 10. Tablespaces Dividir os objetos e parti¸c˜oes em diferentes discos RAIDs, LUNs, etc; Dados menos acessados podem ficar em discos maiores e mais lentos; Dados mais acessados podem ficar em discos mais r´apidos como SSDs; Dados tempor´arios ou que possam ser reconstru´ıdos podem ficar em parti¸c˜oes com otimiza¸c˜ao mais agressiva; Ajustes no otimizador de consultas do Postgres podem ser feitas individualmente para cada tablespace.
  • 11. RAID RAID 10 para os dados (seguran¸ca + velocidade leitura e escrita) RAID 5 para dados hist´oricos (velocidade leitura) RAID 0 para dados tempor´arios (velocidade de leitura e escrita)
  • 12. Velocidade de E/S em disco Utilizar sempre discos confi´aveis como SAS e Fibre Channel O aumento na velocidade dos discos n˜ao acompanha a CPU Uma ´unica consulta pode envolver a centenas de GBs Gravar em disco com concorrˆencia ´e lento em complexo Conseguir discos com um alto IOPS custa realmente caro
  • 13. Velocidade de I/O Figura : Trem em Mulan - Paquist˜ao
  • 14. Particionamento de tabelas Dividir grandes tabelas e ´ındices em tabelas menores; Diminui consideravelmente o I/O quando vocˆe s´o precisa dos dados numa parti¸c˜ao; Mecanismo de particionamento ainda ´e pouco refinado no PostgreSQL e possui muitas restri¸c˜oes; A modelagem das tabelas particionadas funcionam melhor com PKs compostas; As consultas precisam utilizar cl´ausulas que batem com o particionamento na cl´ausula WHERE; Exigem muitos testes e ajustes para funcionar bem. Veja palestra ”Chain Saw Massacre”amanh˜a!!!
  • 15. E a modelagem? Utilizar conceito de ”chave mestre”!! Bancos VARCHAR Colunas Espertas (multi-prop´osito) Restri¸c˜oes de integridade Chave Natural e Chave Artificial Problemas com modelagem ruim nunca aparecem em bases com poucos GBs. Quando a sua base j´a possui TBs, os problemas de modelagem se tornam insol´uveis;
  • 16. Backup Bases at´e alguns GBs: pg dump (backup l´ogico); Bases at´e 500GB: pg backup (backup f´ısico); Bases maiores que 500GB: pg rman (backup f´ısico incremental) OU snapshot via storage (´e caro mas ´e animal!)
  • 17. Vacuum N˜ao rodar o VACUUM significa perder espa¸co em disco e performance, e em casos cr´ıticos o XID wraparound Deixar o VACUUM rodar o tempo todo degrada a performance (ajuste qtd de workers, cost delay, naptime, etc); Desligar o AUTO VACUUM para cargas em lote; Ajustar individualmente o VACUUM em todas tabelas grandes. Lembre-se: ”N˜ao existe solu¸c˜ao auto-m´agica”
  • 18. Incha¸cos (bloat) Tabelas e ´Indices JAMAIS use o VACUUM FULL!! ´E proibido e ponto final! (tenta se for macho) CREATE INDEX CONCLURRENTLY REINDEX CONCURRENTLY (9.3) pg repack (fork do pg reorg)
  • 19. Tunning Linux sysctl.conf (shmmax, oomkiller, sem) limits.conf (nproc, nofile) PostgreSQL shared buffers, temp buffers e wal buffers checkpoint segments work mem effective cache size Ajuste ”Planner Cost Constants”por tablespace
  • 20. Outros recursos ´Indices parciais ´Indices funcionais Vis˜oes materializadas Foreign Data Wrappers Pool de Conex˜oes (pgbouncer) Memcache Um exemplo pr´atico!!
  • 21. Carga de Dados usar COPY ao inv´es de INSERT Unlogged Tables para dados tempor´arios desligar autovacuum e ligar depois remover indices antes e criar depois remover constraints antes e criar depois ajustes configura¸c˜oes para sess˜ao ou usu´ario (temp buffers, work mem e maintenance work mem) paralelizar a carga
  • 22. Expurgo de Dados Particionamento e DROP TABLE Usar INSERT ao inv´es de DELETE CREATE TABLE temp (LIKE original) WITH (autovacuum enabled = false) INSERT INTO temp AS SELECT ... WHERE ... DROP TABLE original CASCADE ALTER TABLE temp RENAME TO original CREATE INDEX ... ALTER TABLE ... ADD CONSTRAINT ... CREATE TRIGGER ... (se houver) ANALYZE original Desligar autovacuum
  • 23. Escrevendo SQL Jamais utilize uma fun¸c˜ao em PL para algo que um SQL puro consegue fazer; COMMIT a cada X altera¸c˜oes. X > 100 e < 100K; Se uma consulta retorna mais de 100 registros, reveja a regra de neg´ocio; INSERT > INSERT multiplo > PREPARE e EXECUTE > INSERT ... SELECT > COPY Aprenda a usar Sub-Queries, Window Functions e Common Table Expression; Relat´orios pesados devem utilizar vis˜oes materializadas.
  • 24. Testes Teste as funcionalidades Teste com volumes de dados o mais realistas poss´ıvel Teste com carga de concorrˆencia o mais realista poss´ıvel
  • 25. Monitoramento Monitore o SO, o PostgreSQL, a aplica¸c˜ao Acompanhar o crescimento dos objetos Gere logs que mostrem a opera¸c˜ao e a dura¸c˜ao de cada a¸c˜ao Gere logs em formatos que possam ser manipulados por ferramentas automatizadas Aprenda a configurar o log do PostgreSQL e o PGBadger Fa¸ca coletas peri´odicas e armazene tudo em um local central Crie baselines e compare sempre com elas
  • 26. Para os DBAs... Durma bem antes de um novo deploy. Tire uns dias de folga; N˜ao deixe de tomar cerveja com os amigos... Pratique exerc´ıcios f´ısicos regularmente!!!
  • 27. Perguntas ? F´abio Telles Rodriguez (telles@timbira.com.br) Fabr´ızio de Royes Mello (fabrizio@timbira.com.br) http://www.timbira.com.br