SlideShare uma empresa Scribd logo
1 de 17
Baixar para ler offline
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
Apresenta¸c˜ao
F´abio Telles Rodrigues
DBA Oracle e PostgreSQL +10 anos
Colaborador Comunidade Brasileira de PostgreSQL
Blog: http://savepoint.blog.br
@telles
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
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
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 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;
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
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;
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.
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;
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
Hora de estripar tabelas!!!
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!!!
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)
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...
Pratique exerc´ıcios f´ısicos regularmente!!!
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

Mais conteúdo relacionado

Mais procurados

A Evolução do PHP - 4º Dev In Santos
A Evolução do PHP - 4º Dev In SantosA Evolução do PHP - 4º Dev In Santos
A Evolução do PHP - 4º Dev In SantosEvaldo Junior
 
Facilitando o uso de RegEx em Python através de um pacote de código aberto - ...
Facilitando o uso de RegEx em Python através de um pacote de código aberto - ...Facilitando o uso de RegEx em Python através de um pacote de código aberto - ...
Facilitando o uso de RegEx em Python através de um pacote de código aberto - ...PotiLivre Sobrenome
 
A Evolução do PHP - A Linguagem Número 1 da Web - PHP Conference Brasil 2013
A Evolução do PHP - A Linguagem Número 1 da Web - PHP Conference Brasil 2013A Evolução do PHP - A Linguagem Número 1 da Web - PHP Conference Brasil 2013
A Evolução do PHP - A Linguagem Número 1 da Web - PHP Conference Brasil 2013Evaldo Junior
 
Desmistificando web2py - #TDC2011
Desmistificando web2py - #TDC2011Desmistificando web2py - #TDC2011
Desmistificando web2py - #TDC2011Bruno Rocha
 
Do código à produção com Gitlab (mundo python)
Do código à produção com Gitlab (mundo python)Do código à produção com Gitlab (mundo python)
Do código à produção com Gitlab (mundo python)Better Developer
 
Clean Code: Por um mundo com códigos melhores - The Developers Conference - P...
Clean Code: Por um mundo com códigos melhores - The Developers Conference - P...Clean Code: Por um mundo com códigos melhores - The Developers Conference - P...
Clean Code: Por um mundo com códigos melhores - The Developers Conference - P...Thiago Barradas
 
Introdução ao Python & Web Services
Introdução ao Python & Web ServicesIntrodução ao Python & Web Services
Introdução ao Python & Web ServicesDorneles Treméa
 
Arquitetura em camadas em python e quanto isso pode ajudar
Arquitetura em camadas em python e quanto isso pode ajudarArquitetura em camadas em python e quanto isso pode ajudar
Arquitetura em camadas em python e quanto isso pode ajudarBetter Developer
 
Versionamento Ágil com Git
Versionamento Ágil com GitVersionamento Ágil com Git
Versionamento Ágil com Gitelliando dias
 
Deixando o código mais amigável para as próximas gerações
Deixando o código mais amigável para as próximas geraçõesDeixando o código mais amigável para as próximas gerações
Deixando o código mais amigável para as próximas geraçõesfabio perrella
 
Introdução ao Python - FTEC
Introdução ao Python - FTECIntrodução ao Python - FTEC
Introdução ao Python - FTECDorneles Treméa
 
Ir para cloud com arquitetura de microservices resolverá o meu problema?
Ir para cloud com arquitetura de microservices resolverá o meu problema?Ir para cloud com arquitetura de microservices resolverá o meu problema?
Ir para cloud com arquitetura de microservices resolverá o meu problema?Better Developer
 
[LatinoWare 2012] Mini Curso PHP 5.4 + MongoDB
[LatinoWare 2012] Mini Curso PHP 5.4 + MongoDB[LatinoWare 2012] Mini Curso PHP 5.4 + MongoDB
[LatinoWare 2012] Mini Curso PHP 5.4 + MongoDBVinicius de Sá
 
Joomla! do desktop ao datacenter
Joomla! do desktop ao datacenterJoomla! do desktop ao datacenter
Joomla! do desktop ao datacenterPaulino Michelazzo
 
Ysts4 Fazendo Pentesting Com Backtrack 4 Final - Versão Brasil 2010
Ysts4  Fazendo Pentesting Com Backtrack 4 Final - Versão Brasil 2010Ysts4  Fazendo Pentesting Com Backtrack 4 Final - Versão Brasil 2010
Ysts4 Fazendo Pentesting Com Backtrack 4 Final - Versão Brasil 2010Mauro Risonho de Paula Assumpcao
 
CoGrOO 4.0 no FISL 13
CoGrOO 4.0 no FISL 13CoGrOO 4.0 no FISL 13
CoGrOO 4.0 no FISL 13William Colen
 
Clean Code: Por um mundo com códigos melhores - SETI 2017
Clean Code: Por um mundo com códigos melhores - SETI 2017Clean Code: Por um mundo com códigos melhores - SETI 2017
Clean Code: Por um mundo com códigos melhores - SETI 2017Thiago Barradas
 
Python e Django na Globo.com
Python e Django na Globo.comPython e Django na Globo.com
Python e Django na Globo.comricobl
 

Mais procurados (20)

A Evolução do PHP - 4º Dev In Santos
A Evolução do PHP - 4º Dev In SantosA Evolução do PHP - 4º Dev In Santos
A Evolução do PHP - 4º Dev In Santos
 
Facilitando o uso de RegEx em Python através de um pacote de código aberto - ...
Facilitando o uso de RegEx em Python através de um pacote de código aberto - ...Facilitando o uso de RegEx em Python através de um pacote de código aberto - ...
Facilitando o uso de RegEx em Python através de um pacote de código aberto - ...
 
PHP: Evolução
PHP: EvoluçãoPHP: Evolução
PHP: Evolução
 
A Evolução do PHP - A Linguagem Número 1 da Web - PHP Conference Brasil 2013
A Evolução do PHP - A Linguagem Número 1 da Web - PHP Conference Brasil 2013A Evolução do PHP - A Linguagem Número 1 da Web - PHP Conference Brasil 2013
A Evolução do PHP - A Linguagem Número 1 da Web - PHP Conference Brasil 2013
 
Desmistificando web2py - #TDC2011
Desmistificando web2py - #TDC2011Desmistificando web2py - #TDC2011
Desmistificando web2py - #TDC2011
 
Dojo plpgsql
Dojo plpgsqlDojo plpgsql
Dojo plpgsql
 
Do código à produção com Gitlab (mundo python)
Do código à produção com Gitlab (mundo python)Do código à produção com Gitlab (mundo python)
Do código à produção com Gitlab (mundo python)
 
Clean Code: Por um mundo com códigos melhores - The Developers Conference - P...
Clean Code: Por um mundo com códigos melhores - The Developers Conference - P...Clean Code: Por um mundo com códigos melhores - The Developers Conference - P...
Clean Code: Por um mundo com códigos melhores - The Developers Conference - P...
 
Introdução ao Python & Web Services
Introdução ao Python & Web ServicesIntrodução ao Python & Web Services
Introdução ao Python & Web Services
 
Arquitetura em camadas em python e quanto isso pode ajudar
Arquitetura em camadas em python e quanto isso pode ajudarArquitetura em camadas em python e quanto isso pode ajudar
Arquitetura em camadas em python e quanto isso pode ajudar
 
Versionamento Ágil com Git
Versionamento Ágil com GitVersionamento Ágil com Git
Versionamento Ágil com Git
 
Deixando o código mais amigável para as próximas gerações
Deixando o código mais amigável para as próximas geraçõesDeixando o código mais amigável para as próximas gerações
Deixando o código mais amigável para as próximas gerações
 
Introdução ao Python - FTEC
Introdução ao Python - FTECIntrodução ao Python - FTEC
Introdução ao Python - FTEC
 
Ir para cloud com arquitetura de microservices resolverá o meu problema?
Ir para cloud com arquitetura de microservices resolverá o meu problema?Ir para cloud com arquitetura de microservices resolverá o meu problema?
Ir para cloud com arquitetura de microservices resolverá o meu problema?
 
[LatinoWare 2012] Mini Curso PHP 5.4 + MongoDB
[LatinoWare 2012] Mini Curso PHP 5.4 + MongoDB[LatinoWare 2012] Mini Curso PHP 5.4 + MongoDB
[LatinoWare 2012] Mini Curso PHP 5.4 + MongoDB
 
Joomla! do desktop ao datacenter
Joomla! do desktop ao datacenterJoomla! do desktop ao datacenter
Joomla! do desktop ao datacenter
 
Ysts4 Fazendo Pentesting Com Backtrack 4 Final - Versão Brasil 2010
Ysts4  Fazendo Pentesting Com Backtrack 4 Final - Versão Brasil 2010Ysts4  Fazendo Pentesting Com Backtrack 4 Final - Versão Brasil 2010
Ysts4 Fazendo Pentesting Com Backtrack 4 Final - Versão Brasil 2010
 
CoGrOO 4.0 no FISL 13
CoGrOO 4.0 no FISL 13CoGrOO 4.0 no FISL 13
CoGrOO 4.0 no FISL 13
 
Clean Code: Por um mundo com códigos melhores - SETI 2017
Clean Code: Por um mundo com códigos melhores - SETI 2017Clean Code: Por um mundo com códigos melhores - SETI 2017
Clean Code: Por um mundo com códigos melhores - SETI 2017
 
Python e Django na Globo.com
Python e Django na Globo.comPython e Django na Globo.com
Python e Django na Globo.com
 

Destaque

Postgres Wonderland - PGDay Cascavél 2013
Postgres Wonderland - PGDay Cascavél 2013Postgres Wonderland - PGDay Cascavél 2013
Postgres Wonderland - PGDay Cascavél 2013Fabio Telles Rodriguez
 
Harder, better, faster, stronger: PostgreSQL 9.1
Harder, better, faster, stronger: PostgreSQL 9.1Harder, better, faster, stronger: PostgreSQL 9.1
Harder, better, faster, stronger: PostgreSQL 9.1Selena Deckelmann
 
Overview Sobre Varnish
Overview Sobre VarnishOverview Sobre Varnish
Overview Sobre VarnishLocaweb
 
Celery for SysAdmins
Celery for SysAdminsCelery for SysAdmins
Celery for SysAdminsLocaweb
 
Se eu fosse a Microsoft
Se eu fosse a MicrosoftSe eu fosse a Microsoft
Se eu fosse a MicrosoftCesar Brod
 
Ambient Light Events- Wylkon Queiroz
Ambient Light Events- Wylkon QueirozAmbient Light Events- Wylkon Queiroz
Ambient Light Events- Wylkon QueirozLocaweb
 
Soluções para sua empresa vender na Internet
Soluções para sua empresa vender na InternetSoluções para sua empresa vender na Internet
Soluções para sua empresa vender na InternetLocaweb
 
Isolamento e mvcc
Isolamento e mvccIsolamento e mvcc
Isolamento e mvccLocaweb
 
Sistemas Distribuidos
Sistemas DistribuidosSistemas Distribuidos
Sistemas DistribuidosLocaweb
 
Dojo PHP (treinanto programação orientada a objetos em PHP)
Dojo PHP (treinanto programação orientada a objetos em PHP)Dojo PHP (treinanto programação orientada a objetos em PHP)
Dojo PHP (treinanto programação orientada a objetos em PHP)Fabrízio Mello
 
Comercio eletronico - Dicas práticas
Comercio eletronico - Dicas práticasComercio eletronico - Dicas práticas
Comercio eletronico - Dicas práticasLocaweb
 
API Do Email Marketing Locaweb
API Do Email Marketing LocawebAPI Do Email Marketing Locaweb
API Do Email Marketing LocawebLocaweb
 
Estripando o Elefante - (Trabalhando com extensões no PostgreSQL)
Estripando o Elefante - (Trabalhando com extensões no PostgreSQL)Estripando o Elefante - (Trabalhando com extensões no PostgreSQL)
Estripando o Elefante - (Trabalhando com extensões no PostgreSQL)Dickson S. Guedes
 

Destaque (20)

Alta Concorrência com Postgres
Alta Concorrência com PostgresAlta Concorrência com Postgres
Alta Concorrência com Postgres
 
Postgres Wonderland - PGDay Cascavél 2013
Postgres Wonderland - PGDay Cascavél 2013Postgres Wonderland - PGDay Cascavél 2013
Postgres Wonderland - PGDay Cascavél 2013
 
Conceitos E Aplicações
Conceitos E AplicaçõesConceitos E Aplicações
Conceitos E Aplicações
 
Harder, better, faster, stronger: PostgreSQL 9.1
Harder, better, faster, stronger: PostgreSQL 9.1Harder, better, faster, stronger: PostgreSQL 9.1
Harder, better, faster, stronger: PostgreSQL 9.1
 
Freenas
FreenasFreenas
Freenas
 
Overview Sobre Varnish
Overview Sobre VarnishOverview Sobre Varnish
Overview Sobre Varnish
 
Celery for SysAdmins
Celery for SysAdminsCelery for SysAdmins
Celery for SysAdmins
 
Se eu fosse a Microsoft
Se eu fosse a MicrosoftSe eu fosse a Microsoft
Se eu fosse a Microsoft
 
Postgres Wonderland - PGDay CE2013
Postgres  Wonderland - PGDay CE2013Postgres  Wonderland - PGDay CE2013
Postgres Wonderland - PGDay CE2013
 
Ambient Light Events- Wylkon Queiroz
Ambient Light Events- Wylkon QueirozAmbient Light Events- Wylkon Queiroz
Ambient Light Events- Wylkon Queiroz
 
Soluções para sua empresa vender na Internet
Soluções para sua empresa vender na InternetSoluções para sua empresa vender na Internet
Soluções para sua empresa vender na Internet
 
Storage em Oracle RAC
Storage em Oracle RACStorage em Oracle RAC
Storage em Oracle RAC
 
Postgres Big data
Postgres Big dataPostgres Big data
Postgres Big data
 
Isolamento e mvcc
Isolamento e mvccIsolamento e mvcc
Isolamento e mvcc
 
Sistemas Distribuidos
Sistemas DistribuidosSistemas Distribuidos
Sistemas Distribuidos
 
Dojo PHP (treinanto programação orientada a objetos em PHP)
Dojo PHP (treinanto programação orientada a objetos em PHP)Dojo PHP (treinanto programação orientada a objetos em PHP)
Dojo PHP (treinanto programação orientada a objetos em PHP)
 
Revisão do postgresql.conf
Revisão do postgresql.confRevisão do postgresql.conf
Revisão do postgresql.conf
 
Comercio eletronico - Dicas práticas
Comercio eletronico - Dicas práticasComercio eletronico - Dicas práticas
Comercio eletronico - Dicas práticas
 
API Do Email Marketing Locaweb
API Do Email Marketing LocawebAPI Do Email Marketing Locaweb
API Do Email Marketing Locaweb
 
Estripando o Elefante - (Trabalhando com extensões no PostgreSQL)
Estripando o Elefante - (Trabalhando com extensões no PostgreSQL)Estripando o Elefante - (Trabalhando com extensões no PostgreSQL)
Estripando o Elefante - (Trabalhando com extensões no PostgreSQL)
 

Semelhante a Postgres Particionamento

PGAnalytics - Facilitando sua vida do DBA
PGAnalytics - Facilitando sua vida do DBAPGAnalytics - Facilitando sua vida do DBA
PGAnalytics - Facilitando sua vida do DBADextra
 
Desenvolvendo para magento - primeiros passos
Desenvolvendo para magento - primeiros passosDesenvolvendo para magento - primeiros passos
Desenvolvendo para magento - primeiros passosRicardo Martins
 
Banco de dados I - Aula 01 - Guardando Tudo no Armário
Banco de dados I - Aula 01 - Guardando Tudo no ArmárioBanco de dados I - Aula 01 - Guardando Tudo no Armário
Banco de dados I - Aula 01 - Guardando Tudo no ArmárioManoel Afonso
 
Programação Orientada a Aspectos
Programação Orientada a AspectosProgramação Orientada a Aspectos
Programação Orientada a AspectosRicardo Terra
 
Refactoring Databases
Refactoring DatabasesRefactoring Databases
Refactoring DatabasesIsmael
 
ConheçA O Apache 2.0 Parte 2
ConheçA O Apache 2.0   Parte 2ConheçA O Apache 2.0   Parte 2
ConheçA O Apache 2.0 Parte 2Felipe Santos
 
A24 paper - perfil business intelligence - o momento de sair da rotina por ...
A24   paper - perfil business intelligence - o momento de sair da rotina por ...A24   paper - perfil business intelligence - o momento de sair da rotina por ...
A24 paper - perfil business intelligence - o momento de sair da rotina por ...BIBrasil
 
A24 paper - perfil business intelligence - o momento de sair da rotina por ...
A24   paper - perfil business intelligence - o momento de sair da rotina por ...A24   paper - perfil business intelligence - o momento de sair da rotina por ...
A24 paper - perfil business intelligence - o momento de sair da rotina por ...Marcelo Krug
 
Rogue Snail Talk - Usando Git na Game Jam - WGJ
Rogue Snail Talk - Usando Git na Game Jam - WGJRogue Snail Talk - Usando Git na Game Jam - WGJ
Rogue Snail Talk - Usando Git na Game Jam - WGJNathália Cruz de Oliveira
 
Solisc2009 Migrando de Oracle para Postgresql
Solisc2009 Migrando de Oracle para PostgresqlSolisc2009 Migrando de Oracle para Postgresql
Solisc2009 Migrando de Oracle para PostgresqlLeonardo Medeiros Martins
 
Gerenciamento na nuvem e System Center
Gerenciamento na nuvem e System CenterGerenciamento na nuvem e System Center
Gerenciamento na nuvem e System CenterFernando Palma
 
Os pecados mortais de escalabilidade em Drupal e seus efeitos nos negócios - ...
Os pecados mortais de escalabilidade em Drupal e seus efeitos nos negócios - ...Os pecados mortais de escalabilidade em Drupal e seus efeitos nos negócios - ...
Os pecados mortais de escalabilidade em Drupal e seus efeitos nos negócios - ...Taller Negócio Digitais
 
Desenvolva Sistemas Embutidos com Software Livre - Carlos A. M. dos Santos e ...
Desenvolva Sistemas Embutidos com Software Livre - Carlos A. M. dos Santos e ...Desenvolva Sistemas Embutidos com Software Livre - Carlos A. M. dos Santos e ...
Desenvolva Sistemas Embutidos com Software Livre - Carlos A. M. dos Santos e ...Tchelinux
 
pgModeler: muito mais que um modelador de bancos de dados PostgreSQL
pgModeler: muito mais que um modelador de bancos de dados PostgreSQLpgModeler: muito mais que um modelador de bancos de dados PostgreSQL
pgModeler: muito mais que um modelador de bancos de dados PostgreSQLRaphael Silva
 

Semelhante a Postgres Particionamento (20)

Revista programar 12
Revista programar 12Revista programar 12
Revista programar 12
 
Db2
Db2Db2
Db2
 
PGAnalytics - Facilitando sua vida do DBA
PGAnalytics - Facilitando sua vida do DBAPGAnalytics - Facilitando sua vida do DBA
PGAnalytics - Facilitando sua vida do DBA
 
Desenvolvendo para magento - primeiros passos
Desenvolvendo para magento - primeiros passosDesenvolvendo para magento - primeiros passos
Desenvolvendo para magento - primeiros passos
 
Banco de dados I - Aula 01 - Guardando Tudo no Armário
Banco de dados I - Aula 01 - Guardando Tudo no ArmárioBanco de dados I - Aula 01 - Guardando Tudo no Armário
Banco de dados I - Aula 01 - Guardando Tudo no Armário
 
Programação Orientada a Aspectos
Programação Orientada a AspectosProgramação Orientada a Aspectos
Programação Orientada a Aspectos
 
Refactoring Databases
Refactoring DatabasesRefactoring Databases
Refactoring Databases
 
ConheçA O Apache 2.0 Parte 2
ConheçA O Apache 2.0   Parte 2ConheçA O Apache 2.0   Parte 2
ConheçA O Apache 2.0 Parte 2
 
A24 paper - perfil business intelligence - o momento de sair da rotina por ...
A24   paper - perfil business intelligence - o momento de sair da rotina por ...A24   paper - perfil business intelligence - o momento de sair da rotina por ...
A24 paper - perfil business intelligence - o momento de sair da rotina por ...
 
A24 paper - perfil business intelligence - o momento de sair da rotina por ...
A24   paper - perfil business intelligence - o momento de sair da rotina por ...A24   paper - perfil business intelligence - o momento de sair da rotina por ...
A24 paper - perfil business intelligence - o momento de sair da rotina por ...
 
Postgres, a "Metamorfose Ambulante"
Postgres, a "Metamorfose Ambulante"Postgres, a "Metamorfose Ambulante"
Postgres, a "Metamorfose Ambulante"
 
TechEd_OFC302
TechEd_OFC302TechEd_OFC302
TechEd_OFC302
 
Rogue Snail Talk - Usando Git na Game Jam - WGJ
Rogue Snail Talk - Usando Git na Game Jam - WGJRogue Snail Talk - Usando Git na Game Jam - WGJ
Rogue Snail Talk - Usando Git na Game Jam - WGJ
 
Solisc2009 Migrando de Oracle para Postgresql
Solisc2009 Migrando de Oracle para PostgresqlSolisc2009 Migrando de Oracle para Postgresql
Solisc2009 Migrando de Oracle para Postgresql
 
Gerenciamento na nuvem e System Center
Gerenciamento na nuvem e System CenterGerenciamento na nuvem e System Center
Gerenciamento na nuvem e System Center
 
Os pecados mortais de escalabilidade em Drupal e seus efeitos nos negócios - ...
Os pecados mortais de escalabilidade em Drupal e seus efeitos nos negócios - ...Os pecados mortais de escalabilidade em Drupal e seus efeitos nos negócios - ...
Os pecados mortais de escalabilidade em Drupal e seus efeitos nos negócios - ...
 
KrahoDB
KrahoDBKrahoDB
KrahoDB
 
Desenvolva Sistemas Embutidos com Software Livre - Carlos A. M. dos Santos e ...
Desenvolva Sistemas Embutidos com Software Livre - Carlos A. M. dos Santos e ...Desenvolva Sistemas Embutidos com Software Livre - Carlos A. M. dos Santos e ...
Desenvolva Sistemas Embutidos com Software Livre - Carlos A. M. dos Santos e ...
 
SPA com CSharp
SPA com CSharpSPA com CSharp
SPA com CSharp
 
pgModeler: muito mais que um modelador de bancos de dados PostgreSQL
pgModeler: muito mais que um modelador de bancos de dados PostgreSQLpgModeler: muito mais que um modelador de bancos de dados PostgreSQL
pgModeler: muito mais que um modelador de bancos de dados PostgreSQL
 

Mais de Fabio Telles Rodriguez

Mais de Fabio Telles Rodriguez (15)

Data Hero: Sua carreira na área de dados
Data Hero: Sua carreira na área de dadosData Hero: Sua carreira na área de dados
Data Hero: Sua carreira na área de dados
 
Postgres level up
Postgres level upPostgres level up
Postgres level up
 
Explain this!
Explain this!Explain this!
Explain this!
 
High concurrency with Postgres
High concurrency with PostgresHigh concurrency with Postgres
High concurrency with Postgres
 
Aplicações 10x a 100x mais rápida com o postgre sql
Aplicações 10x a 100x mais rápida com o postgre sqlAplicações 10x a 100x mais rápida com o postgre sql
Aplicações 10x a 100x mais rápida com o postgre sql
 
Novidades do PostgreSQL 10
Novidades do  PostgreSQL 10Novidades do  PostgreSQL 10
Novidades do PostgreSQL 10
 
Migre seu banco de dados para a nuvem. Pergunte-me como!
Migre seu banco de dados para a nuvem. Pergunte-me como!Migre seu banco de dados para a nuvem. Pergunte-me como!
Migre seu banco de dados para a nuvem. Pergunte-me como!
 
Postgres Wonderland - Campus Party 2013
Postgres Wonderland - Campus Party 2013Postgres Wonderland - Campus Party 2013
Postgres Wonderland - Campus Party 2013
 
Alta Concorrência com Postgres
Alta Concorrência com PostgresAlta Concorrência com Postgres
Alta Concorrência com Postgres
 
Discos & Cia em PostgreSQL
Discos & Cia em PostgreSQLDiscos & Cia em PostgreSQL
Discos & Cia em PostgreSQL
 
PostgreSQL, o Elefante Encouraçado
PostgreSQL, o Elefante EncouraçadoPostgreSQL, o Elefante Encouraçado
PostgreSQL, o Elefante Encouraçado
 
Tutorial para criação de módulo no Xoops 2.4
Tutorial para criação de módulo no Xoops 2.4Tutorial para criação de módulo no Xoops 2.4
Tutorial para criação de módulo no Xoops 2.4
 
PostgreSQL Conceitos e aplicações - FSA
PostgreSQL  Conceitos e aplicações - FSAPostgreSQL  Conceitos e aplicações - FSA
PostgreSQL Conceitos e aplicações - FSA
 
PostgreSQL Tuning: O elefante mais rápido que um leopardo
PostgreSQL Tuning: O elefante mais rápido que um leopardoPostgreSQL Tuning: O elefante mais rápido que um leopardo
PostgreSQL Tuning: O elefante mais rápido que um leopardo
 
PostgreSQL Conceitos e aplicações
PostgreSQL  Conceitos e aplicaçõesPostgreSQL  Conceitos e aplicações
PostgreSQL Conceitos e aplicações
 

Postgres Particionamento

  • 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. 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. 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. 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. Sobre o que estamos falando?
  • 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. Mantra Nada ´e t˜ao ruim que n˜ao possa piorar
  • 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. 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. 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. 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. Hora de estripar tabelas!!!
  • 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. 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. As vantagens ´E f´acil de automatizar; ´E bastante flex´ıvel; ´E poss´ıvel particionar tabelas j´a populadas;
  • 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!!!