The Postgres Chainsaw Massacre
Todas as emo¸c˜oes de um filme B sobre particionamento de
tabelas
F´abio Telles Rodriguez
Ti...
Apresenta¸c˜ao
F´abio Telles Rodrigues
DBA Oracle e PostgreSQL +10 anos
Colaborador Comunidade Brasileira de PostgreSQL
Bl...
Timbira
http://www.timbira.com.br
A empresa Brasileira de PostgreSQL
Consultoria / Desenvolvimento
Planos de Suporte
Parce...
Sobre esta apresenta¸c˜ao
esta apresenta¸c˜ao est´a dispon´ıvel em:
http://www.timbira.com.br/material
esta apresenta¸c˜ao...
Sobre o que estamos falando?
Sobre o que estamos falando?
Particionamento:
´E um mal necess´ario;
Ningu´em quer fazˆe-lo se n˜ao for absolutamente nece...
Mantra
Nada ´e t˜ao ruim que n˜ao possa piorar
Vantagens
Trabalhar com um volume de dados menor ´e mais r´apido;
Tabelas menores tem maior chance de caber no buffer em
me...
Implementa¸c˜ao no PostgreSQL
No PostgreSQL ´e implementado gra¸cas a uma gambiarra
chamada ”Heran¸ca de tabelas”;
Ningu´e...
Modelagem
Sistemas com grande volume de dados tem de ser criados j´a
pensando no particionamento;
A modelagem para o parti...
M˜ao na massa
Vamos criar nossa primeira tabela particionada com...
schema APP
usu´arios APP e CLIENT
TABLESPACEs CLIENTE,...
Hora de estripar tabelas!!!
Hora de estripar tabelas!!!
Criar tabelas filhas, A.K.A parti¸c˜oes;
Remover constraint NO INHERIT;
Adicionar FKs;
Adiciona...
Os Horrores
INSERT retorna 0 registros inseridos;
´E poss´ıvel criar parti¸c˜oes com chaves que se sobreponham;
Overhead c...
As vantagens
´E f´acil de automatizar;
´E bastante flex´ıvel;
´E poss´ıvel particionar tabelas j´a populadas;
Para os DBAs...
Durma bem antes de um novo deploy. Tire uns dias de folga;
N˜ao deixe de tomar cerveja com os amigos...
Pr...
Perguntas
?
F´abio Telles Rodriguez
(telles@timbira.com.br)
http://www.timbira.com.br
http://savepoint.blog.br/particionam...
Upcoming SlideShare
Loading in …5
×

Postgres Chainsaw Massacre

241
-1

Published on

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

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
241
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
8
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Postgres Chainsaw Massacre

  1. 1. The Postgres Chainsaw Massacre Todas as emo¸c˜oes de um filme B sobre particionamento de tabelas F´abio Telles Rodriguez Timbira - A empresa brasileira de PostgreSQL 17 de agosto de 2013 PGBR2013
  2. 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
  3. 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. 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. 5. Sobre o que estamos falando?
  6. 6. Sobre o que estamos falando? Particionamento: ´E um mal necess´ario; Ningu´em quer fazˆe-lo se n˜ao for absolutamente necess´ario; Usa o princ´ıpio do ”dividir para conquistar”; Se suas tabelas n˜ao chegaram na casa dos 100GB, gaste seu tempo com algo mais divertido como criar um bilh˜ao de tabelas;
  7. 7. Mantra Nada ´e t˜ao ruim que n˜ao possa piorar
  8. 8. Vantagens Trabalhar com um volume de dados menor ´e mais r´apido; Tabelas menores tem maior chance de caber no buffer em mem´oria; Uma parti¸c˜ao mais acessada pode ficar em discos mais r´apidas; Rotinas de expurgo podem trocar um DELETE por um DROP TABLE ou TRUNCATE; Rotinas de manuten¸c˜ao como VACUUM, CLUSTER, REINDEX e ANALYZE podem rodar s´o em uma parti¸c˜ao;
  9. 9. Implementa¸c˜ao no PostgreSQL No PostgreSQL ´e implementado gra¸cas a uma gambiarra chamada ”Heran¸ca de tabelas”; Ningu´em levou a heran¸ca de tabelas muito `a s´erio no Postgres, exceto o seu criador, o Prof. Michael Stonebraker; Come¸cou a ser utilizado de verdade para particionamento a partir da vers˜ao 8.1; Pequenas e importantes melhorias surgiram em todas vers˜oes subsequentes; Estamos quase na vers˜ao 9.3 e ainda assim ´e uma gambiarra. Funciona, mas ´E UMA GAMBIARRA.
  10. 10. Modelagem Sistemas com grande volume de dados tem de ser criados j´a pensando no particionamento; A modelagem para o particionamento n˜ao ´e uma particularidade do PostgreSQL. Todos SGDBs tem a mesma limita¸c˜ao; O particionamento consiste apenas em quebrar as tabelas em peda¸cos menores; O grande problema ´e decidir qual o crit´erio para decidir quais registros ficam em cada peda¸co A.K.A. parti¸c˜ao; O problema central consiste em escolher um campo chave para o crit´erio de divis˜ao das tabelas; Este campo deve estar presente como parte da PK composta de todas tabelas particionadas;
  11. 11. M˜ao na massa Vamos criar nossa primeira tabela particionada com... schema APP usu´arios APP e CLIENT TABLESPACEs CLIENTE, VENDEDOR, PEDIDO, PEDIDO DETALHE GRANTs PK, FK, CHECK Parˆametros de storage
  12. 12. Hora de estripar tabelas!!!
  13. 13. Hora de estripar tabelas!!! Criar tabelas filhas, A.K.A parti¸c˜oes; Remover constraint NO INHERIT; Adicionar FKs; Adicionar parˆametros de storage; Alterar dono permiss˜oes na parti¸c˜ao; Criar gatilho; TESTAR!!!
  14. 14. Os Horrores INSERT retorna 0 registros inseridos; ´E poss´ıvel criar parti¸c˜oes com chaves que se sobreponham; Overhead criado pelo gatilho de INSERT; Problemas com chaves estrangeiras (FKs)
  15. 15. As vantagens ´E f´acil de automatizar; ´E bastante flex´ıvel; ´E poss´ıvel particionar tabelas j´a populadas;
  16. 16. 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!!!
  17. 17. Perguntas ? F´abio Telles Rodriguez (telles@timbira.com.br) 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

×