Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

Apresenta¸ c˜ ao F´ abio Telles Rodrigues DBA Oracle e PostgreSQL +10 anos Colaborador Comunidade Brasileira de PostgreSQL Blog: http://savepoint.blog.br @telles

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

Sobre o que estamos falando?

Slide 6

Slide 6 text

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;

Slide 7

Slide 7 text

Mantra Nada ´ e t˜ ao ruim que n˜ ao possa piorar

Slide 8

Slide 8 text

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;

Slide 9

Slide 9 text

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.

Slide 10

Slide 10 text

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;

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

Hora de estripar tabelas!!!

Slide 13

Slide 13 text

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!!!

Slide 14

Slide 14 text

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)

Slide 15

Slide 15 text

As vantagens ´ E f´ acil de automatizar; ´ E bastante flex´ ıvel; ´ E poss´ ıvel particionar tabelas j´ a populadas;

Slide 16

Slide 16 text

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!!!

Slide 17

Slide 17 text

Perguntas ? F´ abio 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