Postgres Chainsaw Massacre
-
Upload
fabio-telles-rodriguez -
Category
Technology
-
view
129 -
download
0
description
Transcript of 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
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
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
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
Sobre o que estamos falando?
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;
Mantra
Nada e tao ruim que nao possa piorar
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;
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.
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;
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
Hora de estripar tabelas!!!
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!!!
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)
As vantagens
I E facil de automatizar;
I E bastante flexıvel;
I E possıvel particionar tabelas ja populadas;
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!!!
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