Postgres Chainsaw Massacre

17
The Postgres Chainsaw Massacre Todas as emo¸c˜ oes de um filme B sobre particionamento de tabelas abio Telles Rodriguez Timbira - A empresa brasileira de PostgreSQL 17 de agosto de 2013 PGBR2013

description

Todas as emoções de um filme B sobre particionamento de tabelas no PostgreSQL. Tutorial realizado no PGBR2013

Transcript of Postgres Chainsaw Massacre

Page 1: Postgres Chainsaw Massacre

The Postgres Chainsaw MassacreTodas as emocoes de um filme B sobre particionamento de

tabelas

Fabio Telles Rodriguez

Timbira - A empresa brasileira de PostgreSQL

17 de agosto de 2013

PGBR2013

Page 2: Postgres Chainsaw Massacre

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

Page 3: Postgres Chainsaw Massacre

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 Chainsaw Massacre

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 Chainsaw Massacre

Sobre o que estamos falando?

Page 6: Postgres Chainsaw Massacre

Sobre o que estamos falando?

Particionamento:

I E um mal necessario;

I Ninguem quer faze-lo se nao for absolutamente necessario;

I Usa o princıpio do ”dividir para conquistar”;

I Se suas tabelas nao chegaram na casa dos 100GB, gaste seutempo com algo mais divertido como criar um bilhao detabelas;

Page 7: Postgres Chainsaw Massacre

Mantra

Nada e tao ruim que nao possa piorar

Page 8: Postgres Chainsaw Massacre

Vantagens

I Trabalhar com um volume de dados menor e mais rapido;

I Tabelas menores tem maior chance de caber no buffer emmemoria;

I Uma particao mais acessada pode ficar em discos maisrapidas;

I Rotinas de expurgo podem trocar um DELETE por um DROPTABLE ou TRUNCATE;

I Rotinas de manutencao como VACUUM, CLUSTER,REINDEX e ANALYZE podem rodar so em uma particao;

Page 9: Postgres Chainsaw Massacre

Implementacao no PostgreSQL

I No PostgreSQL e implementado gracas a uma gambiarrachamada ”Heranca de tabelas”;

I Ninguem levou a heranca de tabelas muito a serio noPostgres, exceto o seu criador, o Prof. Michael Stonebraker;

I Comecou a ser utilizado de verdade para particionamento apartir da versao 8.1;

I Pequenas e importantes melhorias surgiram em todas versoessubsequentes;

I Estamos quase na versao 9.3 e ainda assim e uma gambiarra.

I Funciona, mas E UMA GAMBIARRA.

Page 10: Postgres Chainsaw Massacre

Modelagem

I Sistemas com grande volume de dados tem de ser criados japensando no particionamento;

I A modelagem para o particionamento nao e umaparticularidade do PostgreSQL. Todos SGDBs tem a mesmalimitacao;

I O particionamento consiste apenas em quebrar as tabelas empedacos menores;

I O grande problema e decidir qual o criterio para decidir quaisregistros ficam em cada pedaco A.K.A. particao;

I O problema central consiste em escolher um campo chavepara o criterio de divisao das tabelas;

I Este campo deve estar presente como parte da PK compostade todas tabelas particionadas;

Page 11: Postgres Chainsaw Massacre

Mao na massa

I Vamos criar nossa primeira tabela particionada com...

I schema APP

I usuarios APP e CLIENT

I TABLESPACEs CLIENTE, VENDEDOR, PEDIDO,PEDIDO DETALHE

I GRANTs

I PK, FK, CHECK

I Parametros de storage

Page 12: Postgres Chainsaw Massacre

Hora de estripar tabelas!!!

Page 13: Postgres Chainsaw Massacre

Hora de estripar tabelas!!!

I Criar tabelas filhas, A.K.A particoes;

I Remover constraint NO INHERIT;

I Adicionar FKs;

I Adicionar parametros de storage;

I Alterar dono permissoes na particao;

I Criar gatilho;

I TESTAR!!!

Page 14: Postgres Chainsaw Massacre

Os Horrores

I INSERT retorna 0 registros inseridos;

I E possıvel criar particoes com chaves que se sobreponham;

I Overhead criado pelo gatilho de INSERT;

I Problemas com chaves estrangeiras (FKs)

Page 15: Postgres Chainsaw Massacre

As vantagens

I E facil de automatizar;

I E bastante flexıvel;

I E possıvel particionar tabelas ja populadas;

Page 16: Postgres Chainsaw Massacre

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 17: Postgres Chainsaw Massacre

Perguntas

?Fabio Telles Rodriguez([email protected])

http://www.timbira.com.br

http://savepoint.blog.br/particionamento-de-tabelas-no-postgres-quando

http://savepoint.blog.br/particionamento-de-tabelas-no-postgres-como

http://savepoint.blog.br/particionamento-de-tabelas-no-postgres-detalhes

http://savepoint.blog.br/particionamento-de-tabelas-no-postgres-automatizando