postgres big data

27
Postgres Big Data trabalhando com bases al´ em do 1TB no PostgreSQL abio Telles Rodriguez e Fabr´ ızio de Royes Mello Timbira - A empresa brasileira de PostgreSQL 16 de agosto de 2013

Upload: fabio-telles-rodriguez

Post on 17-Dec-2014

911 views

Category:

Documents


0 download

DESCRIPTION

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

TRANSCRIPT

Page 1: Postgres Big data

Postgres Big Datatrabalhando com bases alem do 1TB no PostgreSQL

Fabio Telles Rodriguez e Fabrızio de Royes Mello

Timbira - A empresa brasileira de PostgreSQL

16 de agosto de 2013

Page 2: Postgres Big data

Apresentacao

Fabio Telles Rodrigues

I DBA Oracle e PostgreSQL +10 anos

I Colaborador Comunidade Brasileira de PostgreSQL

I Blog: http://savepoint.blog.br

I @telles

Fabrızio de Royes Mello

I DBA PostgreSQL +10 anos

I Colaborador Comunidade Brasileira de PostgreSQL

I Colaborador PostgreSQL Global Development Group

I Blog: http://fabriziomello.blogspot.com

I @fabriziomello

Page 3: Postgres Big data

Timbira

I http://www.timbira.com.br

I A empresa Brasileira de PostgreSQL

I Consultoria / Desenvolvimento

I Planos de Suporte

I Parcerias com Empresas Desenvolvedoras de Software

I Treinamentos In-Company e On-Line

I Correcao de bugs no PostgreSQL garantida em contrato

Page 4: Postgres Big data

Sobre esta apresentacao

I esta apresentacao esta disponıvel em:http://www.timbira.com.br/material

I esta apresentacao esta sob licenca Creative CommonsAtribuicao 3.0 Brasil :http://creativecommons.org/licenses/by/3.0/br

Page 5: Postgres Big data

Sobre o que estamos falando?

Figura : Metro - SP / Estacao Se

Page 6: Postgres Big data

Sobre o que NAO estamos falando?

I Map/Reduce

I Hadoop e tecnologias similares

I Camada de aplicacao

I Cluster e Replicacao

I DW

Page 7: Postgres Big data

Sobre o que estamos falando?

Big Data:

I E uma buzzword que serve para vender: hardware, licencas,cursos, livros, etc...

I Bases com mais de 1TB;

I Tabelas e/ou ındices com mais de 100GB;

I Consultas com bilhoes de registros envolvidos;

I Crescimento de varios GBs por dia;

I Relatorios e cargas em lote com janelas inviaveis.

Page 8: Postgres Big data

Mantra

Em Big Data nao existe solucaootima, boa ou regular, existe a”menos pior”!!

Page 9: Postgres Big data

Espaco em Disco

Imagine uma base de 1TB

I 20% crescimento ao ano = 1,75TB em 3 anos

I Espaco para backup = 3,5TB

I 250GB de archive = 3,75TB

I 500GB de area de manobra = 4,25TB

I 20% de margem de seguranca = 5,1TB

I RAID 1 = 10,2TB

Page 10: Postgres Big data

Tablespaces

I Dividir os objetos e particoes em diferentes discos RAIDs,LUNs, etc;

I Dados menos acessados podem ficar em discos maiores e maislentos;

I Dados mais acessados podem ficar em discos mais rapidoscomo SSDs;

I Dados temporarios ou que possam ser reconstruıdos podemficar em particoes com otimizacao mais agressiva;

I Ajustes no otimizador de consultas do Postgres podem serfeitas individualmente para cada tablespace.

Page 11: Postgres Big data

RAID

I RAID 10 para os dados (seguranca + velocidade leitura eescrita)

I RAID 5 para dados historicos (velocidade leitura)

I RAID 0 para dados temporarios (velocidade de leitura eescrita)

Page 12: Postgres Big data

Velocidade de E/S em disco

I Utilizar sempre discos confiaveis como SAS e Fibre Channel

I O aumento na velocidade dos discos nao acompanha a CPU

I Uma unica consulta pode envolver a centenas de GBs

I Gravar em disco com concorrencia e lento em complexo

I Conseguir discos com um alto IOPS custa realmente caro

Page 13: Postgres Big data

Velocidade de I/O

Figura : Trem em Mulan - Paquistao

Page 14: Postgres Big data

Particionamento de tabelas

I Dividir grandes tabelas e ındices em tabelas menores;

I Diminui consideravelmente o I/O quando voce so precisa dosdados numa particao;

I Mecanismo de particionamento ainda e pouco refinado noPostgreSQL e possui muitas restricoes;

I A modelagem das tabelas particionadas funcionam melhorcom PKs compostas;

I As consultas precisam utilizar clausulas que batem com oparticionamento na clausula WHERE;

I Exigem muitos testes e ajustes para funcionar bem.

I Veja palestra ”Chain Saw Massacre”amanha!!!

Page 15: Postgres Big data

E a modelagem?

I Utilizar conceito de ”chave mestre”!!

I Bancos VARCHAR

I Colunas Espertas (multi-proposito)

I Restricoes de integridade

I Chave Natural e Chave Artificial

I Problemas com modelagem ruim nunca aparecem em basescom poucos GBs.

I Quando a sua base ja possui TBs, os problemas demodelagem se tornam insoluveis;

Page 16: Postgres Big data

Backup

I Bases ate alguns GBs: pg dump (backup logico);

I Bases ate 500GB: pg backup (backup fısico);

I Bases maiores que 500GB: pg rman (backup fısicoincremental) OU snapshot via storage (e caro mas e animal!)

Page 17: Postgres Big data

Vacuum

I Nao rodar o VACUUM significa perder espaco em disco eperformance, e em casos crıticos o XID wraparound

I Deixar o VACUUM rodar o tempo todo degrada aperformance (ajuste qtd de workers, cost delay, naptime, etc);

I Desligar o AUTO VACUUM para cargas em lote;

I Ajustar individualmente o VACUUM em todas tabelasgrandes.

I Lembre-se: ”Nao existe solucao auto-magica”

Page 18: Postgres Big data

Inchacos (bloat) Tabelas e Indices

I JAMAIS use o VACUUM FULL!! E proibido e ponto final!(tenta se for macho)

I CREATE INDEX CONCLURRENTLY

I REINDEX CONCURRENTLY (9.3)

I pg repack (fork do pg reorg)

Page 19: Postgres Big data

Tunning

Linux

I sysctl.conf (shmmax, oomkiller, sem)

I limits.conf (nproc, nofile)

PostgreSQL

I shared buffers, temp buffers e wal buffers

I checkpoint segments

I work mem

I effective cache size

I Ajuste ”Planner Cost Constants”por tablespace

Page 20: Postgres Big data

Outros recursos

I Indices parciais

I Indices funcionais

I Visoes materializadas

I Foreign Data Wrappers

I Pool de Conexoes (pgbouncer)

I Memcache

I Um exemplo pratico!!

Page 21: Postgres Big data

Carga de Dados

I usar COPY ao inves de INSERT

I Unlogged Tables para dados temporarios

I desligar autovacuum e ligar depois

I remover indices antes e criar depois

I remover constraints antes e criar depois

I ajustes configuracoes para sessao ou usuario (temp buffers,work mem e maintenance work mem)

I paralelizar a carga

Page 22: Postgres Big data

Expurgo de Dados

Particionamento e DROP TABLE

Usar INSERT ao inves de DELETE

I CREATE TABLE temp (LIKE original) WITH(autovacuum enabled = false)

I INSERT INTO temp AS SELECT ... WHERE ...

I DROP TABLE original CASCADE

I ALTER TABLE temp RENAME TO original

I CREATE INDEX ...

I ALTER TABLE ... ADD CONSTRAINT ...

I CREATE TRIGGER ... (se houver)

I ANALYZE original

Desligar autovacuum

Page 23: Postgres Big data

Escrevendo SQL

I Jamais utilize uma funcao em PL para algo que um SQL puroconsegue fazer;

I COMMIT a cada X alteracoes. X > 100 e < 100K;

I Se uma consulta retorna mais de 100 registros, reveja a regrade negocio;

I INSERT > INSERT multiplo > PREPARE e EXECUTE >INSERT ... SELECT > COPY

I Aprenda a usar Sub-Queries, Window Functions e CommonTable Expression;

I Relatorios pesados devem utilizar visoes materializadas.

Page 24: Postgres Big data

Testes

I Teste as funcionalidades

I Teste com volumes de dados o mais realistas possıvel

I Teste com carga de concorrencia o mais realista possıvel

Page 25: Postgres Big data

Monitoramento

I Monitore o SO, o PostgreSQL, a aplicacao

I Acompanhar o crescimento dos objetos

I Gere logs que mostrem a operacao e a duracao de cada acao

I Gere logs em formatos que possam ser manipulados porferramentas automatizadas

I Aprenda a configurar o log do PostgreSQL e o PGBadger

I Faca coletas periodicas e armazene tudo em um local central

I Crie baselines e compare sempre com elas

Page 26: Postgres Big data

Para os DBAs...

I Durma bem antes de um novo deploy. Tire uns dias de folga;

I Nao deixe de tomar cerveja com os amigos...

I Pratique exercıcios fısicos regularmente!!!

Page 27: Postgres Big data

Perguntas

?Fabio Telles Rodriguez ([email protected])

Fabrızio de Royes Mello ([email protected])http://www.timbira.com.br