SlideShare uma empresa Scribd logo
1 de 24
Baixar para ler offline
PGBR 2013
Como lidar com cargas de trabalho mistas
Flavio Gurgel
2
Flavio Gurgel
● Engenheiro eletricista - UFPR
● Líder de projetos especiais – 4Linux
● EnterpriseDB Certified Postgres Plus Associate
● Experiência:
● 18 anos - DBA
● 14 anos - PostgreSQL
● 4 anos – Comunidade brasileira PostgreSQL
3
OLTP
● Transações rápidas
● Volume alto
● Poucas linhas de cada vez
● Maioria escrita
● INSERT, UPDATE, DELETE
● Operacional
4
OLAP
● Transações lentas
● Volume menor
● Muitas linhas
● Maioria leitura
● SELECTs complexos
● Analítico
5
WEB
● Saída do preto e branco
● Adaptação para o mundo Internet
● Intermediário entre OLTP e OLAP
6
OLTP em PostgreSQL
● Priorizar escrita
● pg_xlog separado em discos rápidos
● shared_buffers mais alto
● work_mem mais baixo
● Poucas conexões
● Tuning dos parâmetros WAL
● Tuning do autovacuum
● Índices na dose certa
● Tablespaces onde necessário
7
OLAP em PostgreSQL
● Priorizar leitura
● Algumas tabelas em tablespaces próprias
● Tablespaces em discos rápidos
● work_mem mais alto
● shared_buffers mais baixo
● Tuning dos parâmetros de custo
● Menos conexões ainda
● Maior abundância de índices
8
Web em PostgreSQL
Algo entre os dois anteriores
9
A loucura
Os três modelos anteriores...
...no mesmo banco de dados!
Tudo bem grande.
Lembrete: tem que ser rápido, CLARO.
10
Como
COMO
COMO ?
COMO ???
11
Já ia me esquecendo
Tem uma pitada de linguagem procedural também.
12
Assim
Sistema
Transacional
Rápido
ETL
Banco de dados
em RAM
Sistema Web
do Recente
Usuários
Alertas
Sistema OLAP
do Histórico
Sistema
Alerta
Tabelas e
pl/PgSQL
13
O que faz essa joça?
● Coleta os dados OLTP
● Faz um data mining dedicado:
● Detecta padrões em tempo real (Alertas)
● Permite análise manual do que foi alertado (Web)
● Permite análise refinada, posterior, cruzamentos e
relatórios (Histórico, OLAP)
14
Quem usa isso?
● Quem precisa de detecção em tempo real, alerta e análise, exemplos:
● Trânsito – Detecção de gargalos
● Meteorologia – Prevenção de fenômenos
● Bancos - Prevenção à fraude
● Bolsa de valores – Ativação de circuit-breaker
● Energia – Preparação para picos de consumo
● Telefonia – Prevenção à clonagem
15
1. Usar esquemas
Esquema
OLTP
Esquema
OLAP
Esquema
WEB
PL/pgSQL PL/pgSQL
16
2. Muita memória
● Usar shared_buffers de OLTP
● Usar usuários separados para cada coisa
● OLTP, WEB e OLAP
● ETL
● Se possível segmentar mais
● work_mem individual
17
3. Tablespaces
● Testar, testar
● Medir pg_statio_user_tables
● Verificar heap_blks_read e heap_blks_hit
● Medir pg_statio_user_indexes
● Verificar idx_blks_read e idx_blks_hit
● Separar quem usa mais
18
3. Tablespaces
● select relname, heap_blks_read + heap_blks_hit as heap_usage from
pg_statio_user_tables order by 2 desc;
● relname | heap_usage
● --------------------+------------
● tabela1 | 6020
● tabela2 | 932
● tabela3 | 5
● tabela4 | 1
Tablespace 1
Tablespace 2
19
4. Funções
● Simples e diretas
● Abusar - INSERT INTO foo SELECT...
● Cautela - tabelas temporárias
● Evitar – loops
● Preferir SELECTs complicados ao invés de loops
20
5. Testar muito
● Ter sempre dados de teste bons
● Próximos da realidade
● Em grande volume
● Testar cada função individualmente
● Testar cada consulta individualmente
● Otimizar uma coisa de cada vez
● NUNCA ASSUMIR POR ACHISMO!
21
6. Já em produção
● O log é meu melhor amigo
● PgBadger meu fiel escudeiro
● Escolha o pior e otimize primeiro
● Fazer uma otimização de cada vez
● Sempre verificar o impacto no resto
● NUNCA ASSUMIR POR ACHISMO!
22
Importante
● Entender estatísticas do PostgreSQL
● pg_stat_*
● pg_statio_*
● Entender resultados do PgBagder
● Não existe mágica
● Não é para principiantes (sozinhos)
● Que são sempre bem vindos para contribuir e aprender juntos
23
Conclusão
● Existe trabalho também embaixo do capô
● Discos
● Sistema de arquivos
● Hardware bem comprado e montado
● Demais dicas PostgreSQL
24
Obrigado!
● Flavio Henrique Araque Gurgel
● flavio@4linux.com.br
● O nome mais forte em integração Open Source no Brasil
● O maior case Open Source em missão crítica: Caixa Econômica Federal
● Mais de 50.000 alunos treinados
● Mais de 10 anos apenas com Open Source
● Equipe multidisciplinar: analistas de negócios, programadores, arquitetos, sysadmins e
gerentes de projetos.
● Quando pega um desafio, sai do outro lado
● Parceira Red Hat, Zend, Puppetlabs, EnterpriseDB
● Orientada a padrões abertos e melhores práticas

Mais conteúdo relacionado

Mais procurados

Uma implementação de suporte a
Uma implementação de suporte a Uma implementação de suporte a
Uma implementação de suporte a Rômulo Jales
 
XSS (Cross site scripting)
XSS (Cross site scripting)XSS (Cross site scripting)
XSS (Cross site scripting)Eduardo Bohrer
 
T03_LM3: Javascript (2013-2014)
T03_LM3: Javascript (2013-2014)T03_LM3: Javascript (2013-2014)
T03_LM3: Javascript (2013-2014)Carlos Santos
 
Django Channels - Aplicações real time com Django
Django Channels - Aplicações real time com DjangoDjango Channels - Aplicações real time com Django
Django Channels - Aplicações real time com DjangoPaula Grangeiro
 
DNAD 2015 - Como a arquitetura emergente de sua aplicação pode jogar contra ...
DNAD 2015  - Como a arquitetura emergente de sua aplicação pode jogar contra ...DNAD 2015  - Como a arquitetura emergente de sua aplicação pode jogar contra ...
DNAD 2015 - Como a arquitetura emergente de sua aplicação pode jogar contra ...Gleicon Moraes
 
Um milhao tdc2014sp Apresentação por Fernando Ike
Um milhao tdc2014sp Apresentação por Fernando IkeUm milhao tdc2014sp Apresentação por Fernando Ike
Um milhao tdc2014sp Apresentação por Fernando IkePaulo Fernandes
 
Otimizando Portais Plone: Dicas de Desempenho
Otimizando Portais Plone: Dicas de DesempenhoOtimizando Portais Plone: Dicas de Desempenho
Otimizando Portais Plone: Dicas de DesempenhoDouglas Soares de Andrade
 
Explorando protocolos de serialização de alto desempenho
Explorando protocolos de serialização de alto desempenhoExplorando protocolos de serialização de alto desempenho
Explorando protocolos de serialização de alto desempenhoRafael Monteiro e Pereira
 
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
 
Curso JavaScript - Aula de Introdução como Programar
Curso JavaScript - Aula de Introdução como ProgramarCurso JavaScript - Aula de Introdução como Programar
Curso JavaScript - Aula de Introdução como ProgramarTiago Antônio da Silva
 
Django - A sua cápsula de soluções web em python
Django - A sua cápsula de soluções web em pythonDjango - A sua cápsula de soluções web em python
Django - A sua cápsula de soluções web em pythonPaula Grangeiro
 
Palestra - Meetup WordPress Brasília 2014 - WordPress vs Hacker
Palestra  - Meetup WordPress Brasília 2014 - WordPress vs HackerPalestra  - Meetup WordPress Brasília 2014 - WordPress vs Hacker
Palestra - Meetup WordPress Brasília 2014 - WordPress vs HackerAs Zone
 
PostgreSql - Um banco de dados Open Source que figura entre os grandes
PostgreSql - Um banco de dados Open Source que figura entre os grandesPostgreSql - Um banco de dados Open Source que figura entre os grandes
PostgreSql - Um banco de dados Open Source que figura entre os grandesjoanio trade
 

Mais procurados (16)

Uma implementação de suporte a
Uma implementação de suporte a Uma implementação de suporte a
Uma implementação de suporte a
 
XSS (Cross site scripting)
XSS (Cross site scripting)XSS (Cross site scripting)
XSS (Cross site scripting)
 
T03_LM3: Javascript (2013-2014)
T03_LM3: Javascript (2013-2014)T03_LM3: Javascript (2013-2014)
T03_LM3: Javascript (2013-2014)
 
Django Channels - Aplicações real time com Django
Django Channels - Aplicações real time com DjangoDjango Channels - Aplicações real time com Django
Django Channels - Aplicações real time com Django
 
Alta Concorrência com Postgres
Alta Concorrência com PostgresAlta Concorrência com Postgres
Alta Concorrência com Postgres
 
DNAD 2015 - Como a arquitetura emergente de sua aplicação pode jogar contra ...
DNAD 2015  - Como a arquitetura emergente de sua aplicação pode jogar contra ...DNAD 2015  - Como a arquitetura emergente de sua aplicação pode jogar contra ...
DNAD 2015 - Como a arquitetura emergente de sua aplicação pode jogar contra ...
 
Um milhao tdc2014sp Apresentação por Fernando Ike
Um milhao tdc2014sp Apresentação por Fernando IkeUm milhao tdc2014sp Apresentação por Fernando Ike
Um milhao tdc2014sp Apresentação por Fernando Ike
 
[Testes] frameworks de testes end to-end baseados em node js
[Testes] frameworks de testes end to-end baseados em node js [Testes] frameworks de testes end to-end baseados em node js
[Testes] frameworks de testes end to-end baseados em node js
 
Otimizando Portais Plone: Dicas de Desempenho
Otimizando Portais Plone: Dicas de DesempenhoOtimizando Portais Plone: Dicas de Desempenho
Otimizando Portais Plone: Dicas de Desempenho
 
Explorando protocolos de serialização de alto desempenho
Explorando protocolos de serialização de alto desempenhoExplorando protocolos de serialização de alto desempenho
Explorando protocolos de serialização de alto desempenho
 
Trabalhando com Logs no PostgreSQL
Trabalhando com Logs no PostgreSQLTrabalhando com Logs no PostgreSQL
Trabalhando com Logs no PostgreSQL
 
Introdução ao Python & Web Services
Introdução ao Python & Web ServicesIntrodução ao Python & Web Services
Introdução ao Python & Web Services
 
Curso JavaScript - Aula de Introdução como Programar
Curso JavaScript - Aula de Introdução como ProgramarCurso JavaScript - Aula de Introdução como Programar
Curso JavaScript - Aula de Introdução como Programar
 
Django - A sua cápsula de soluções web em python
Django - A sua cápsula de soluções web em pythonDjango - A sua cápsula de soluções web em python
Django - A sua cápsula de soluções web em python
 
Palestra - Meetup WordPress Brasília 2014 - WordPress vs Hacker
Palestra  - Meetup WordPress Brasília 2014 - WordPress vs HackerPalestra  - Meetup WordPress Brasília 2014 - WordPress vs Hacker
Palestra - Meetup WordPress Brasília 2014 - WordPress vs Hacker
 
PostgreSql - Um banco de dados Open Source que figura entre os grandes
PostgreSql - Um banco de dados Open Source que figura entre os grandesPostgreSql - Um banco de dados Open Source que figura entre os grandes
PostgreSql - Um banco de dados Open Source que figura entre os grandes
 

Destaque

Elasticsearch: Motor de busca e além. Lições aprendidas criando Tu Próximo...
Elasticsearch: Motor de busca e além. Lições aprendidas criando Tu Próximo...Elasticsearch: Motor de busca e além. Lições aprendidas criando Tu Próximo...
Elasticsearch: Motor de busca e além. Lições aprendidas criando Tu Próximo...Miguel Gallardo
 
Inteligência Operacional utilizando a solução Elastic.
Inteligência Operacional utilizando a solução Elastic.Inteligência Operacional utilizando a solução Elastic.
Inteligência Operacional utilizando a solução Elastic.4LinuxCursos
 
Práticas DevOps com Zend Server
Práticas DevOps com Zend ServerPráticas DevOps com Zend Server
Práticas DevOps com Zend ServerDiego Santos
 
Arte, tecnologia e instalação interativa
Arte, tecnologia e instalação interativaArte, tecnologia e instalação interativa
Arte, tecnologia e instalação interativaecoarte
 
HTML5 – O que tem de novo?
HTML5 – O que tem de novo?HTML5 – O que tem de novo?
HTML5 – O que tem de novo?Diego Santos
 
Virtualização usando KVM e LXC
Virtualização usando KVM e LXCVirtualização usando KVM e LXC
Virtualização usando KVM e LXCLuís Eduardo
 
Criando Mapas de rede para monitoramento com Zabbix
Criando Mapas de rede para monitoramento com ZabbixCriando Mapas de rede para monitoramento com Zabbix
Criando Mapas de rede para monitoramento com ZabbixDiego Santos
 
Projeto Zabbix: Conhecendo a ferramenta
Projeto Zabbix: Conhecendo a ferramentaProjeto Zabbix: Conhecendo a ferramenta
Projeto Zabbix: Conhecendo a ferramentaAécio Pires
 
MySQL - Instalação e Alguns comandos de Banco de Dados
MySQL - Instalação e Alguns comandos de Banco de DadosMySQL - Instalação e Alguns comandos de Banco de Dados
MySQL - Instalação e Alguns comandos de Banco de DadosClayton de Almeida Souza
 
Apresentação - Curso de Monitoramento com Zabbix - HOTMART
Apresentação - Curso de Monitoramento com Zabbix - HOTMARTApresentação - Curso de Monitoramento com Zabbix - HOTMART
Apresentação - Curso de Monitoramento com Zabbix - HOTMARTThiago Braga
 
Gerência de redes com Zabbix: conhecendo a ferramenta
Gerência de redes com Zabbix: conhecendo a ferramentaGerência de redes com Zabbix: conhecendo a ferramenta
Gerência de redes com Zabbix: conhecendo a ferramentaAécio Pires
 
Monitorando ativos com Zabbix
Monitorando ativos com ZabbixMonitorando ativos com Zabbix
Monitorando ativos com ZabbixZabbix BR
 
Zabbix: Uma ferramenta para Gerenciamento de ambientes de T.I
Zabbix: Uma ferramenta para Gerenciamento de ambientes de T.IZabbix: Uma ferramenta para Gerenciamento de ambientes de T.I
Zabbix: Uma ferramenta para Gerenciamento de ambientes de T.IAécio Pires
 
Apostila Programação Java
Apostila Programação JavaApostila Programação Java
Apostila Programação Javainfo_cimol
 
Zabbix 3.0 and beyond - FISL 2015
Zabbix 3.0 and beyond - FISL 2015Zabbix 3.0 and beyond - FISL 2015
Zabbix 3.0 and beyond - FISL 2015Zabbix
 

Destaque (16)

Elasticsearch: Motor de busca e além. Lições aprendidas criando Tu Próximo...
Elasticsearch: Motor de busca e além. Lições aprendidas criando Tu Próximo...Elasticsearch: Motor de busca e além. Lições aprendidas criando Tu Próximo...
Elasticsearch: Motor de busca e além. Lições aprendidas criando Tu Próximo...
 
Inteligência Operacional utilizando a solução Elastic.
Inteligência Operacional utilizando a solução Elastic.Inteligência Operacional utilizando a solução Elastic.
Inteligência Operacional utilizando a solução Elastic.
 
Práticas DevOps com Zend Server
Práticas DevOps com Zend ServerPráticas DevOps com Zend Server
Práticas DevOps com Zend Server
 
Arte, tecnologia e instalação interativa
Arte, tecnologia e instalação interativaArte, tecnologia e instalação interativa
Arte, tecnologia e instalação interativa
 
HTML5 – O que tem de novo?
HTML5 – O que tem de novo?HTML5 – O que tem de novo?
HTML5 – O que tem de novo?
 
Virtualização usando KVM e LXC
Virtualização usando KVM e LXCVirtualização usando KVM e LXC
Virtualização usando KVM e LXC
 
Criando Mapas de rede para monitoramento com Zabbix
Criando Mapas de rede para monitoramento com ZabbixCriando Mapas de rede para monitoramento com Zabbix
Criando Mapas de rede para monitoramento com Zabbix
 
Projeto Zabbix: Conhecendo a ferramenta
Projeto Zabbix: Conhecendo a ferramentaProjeto Zabbix: Conhecendo a ferramenta
Projeto Zabbix: Conhecendo a ferramenta
 
MySQL - Instalação e Alguns comandos de Banco de Dados
MySQL - Instalação e Alguns comandos de Banco de DadosMySQL - Instalação e Alguns comandos de Banco de Dados
MySQL - Instalação e Alguns comandos de Banco de Dados
 
Apresentação - Curso de Monitoramento com Zabbix - HOTMART
Apresentação - Curso de Monitoramento com Zabbix - HOTMARTApresentação - Curso de Monitoramento com Zabbix - HOTMART
Apresentação - Curso de Monitoramento com Zabbix - HOTMART
 
Gerência de redes com Zabbix: conhecendo a ferramenta
Gerência de redes com Zabbix: conhecendo a ferramentaGerência de redes com Zabbix: conhecendo a ferramenta
Gerência de redes com Zabbix: conhecendo a ferramenta
 
Monitorando ativos com Zabbix
Monitorando ativos com ZabbixMonitorando ativos com Zabbix
Monitorando ativos com Zabbix
 
Zabbix: Uma ferramenta para Gerenciamento de ambientes de T.I
Zabbix: Uma ferramenta para Gerenciamento de ambientes de T.IZabbix: Uma ferramenta para Gerenciamento de ambientes de T.I
Zabbix: Uma ferramenta para Gerenciamento de ambientes de T.I
 
Apostila Programação Java
Apostila Programação JavaApostila Programação Java
Apostila Programação Java
 
Zabbix 3.0 and beyond - FISL 2015
Zabbix 3.0 and beyond - FISL 2015Zabbix 3.0 and beyond - FISL 2015
Zabbix 3.0 and beyond - FISL 2015
 
Pgbadger
PgbadgerPgbadger
Pgbadger
 

Semelhante a Como lidar com cargas de trabalho mistas em PostgreSQL

Postgresql 50 Sabores - PgDay Ceará 2013
Postgresql 50 Sabores - PgDay Ceará 2013Postgresql 50 Sabores - PgDay Ceará 2013
Postgresql 50 Sabores - PgDay Ceará 2013Cláudio Leopoldino
 
Bancos de dados analíticos open source
Bancos de dados analíticos open sourceBancos de dados analíticos open source
Bancos de dados analíticos open sourceMatheus Espanhol
 
Aumente a performance de seu site de maneira disciplinada
Aumente a performance de seu site de maneira disciplinadaAumente a performance de seu site de maneira disciplinada
Aumente a performance de seu site de maneira disciplinadaHenrique Lima
 
PostgreSQL: O melhor banco de dados Universo
PostgreSQL: O melhor banco de dados UniversoPostgreSQL: O melhor banco de dados Universo
PostgreSQL: O melhor banco de dados Universoelliando dias
 
Node.JS - Workshop do básico ao avançado
Node.JS - Workshop do básico ao avançadoNode.JS - Workshop do básico ao avançado
Node.JS - Workshop do básico ao avançadoEduardo Bohrer
 
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 leopardoelliando dias
 
Secot banco de dados no sql de código aberto
Secot   banco de dados no sql de código abertoSecot   banco de dados no sql de código aberto
Secot banco de dados no sql de código abertoSuissa
 
Teste de performance com JMeter: como criar e executar os testes em aplicaçõe...
Teste de performance com JMeter: como criar e executar os testes em aplicaçõe...Teste de performance com JMeter: como criar e executar os testes em aplicaçõe...
Teste de performance com JMeter: como criar e executar os testes em aplicaçõe...Edlaine Zamora
 
Varrendo APIs REST em Larga Escala utilizando PHP
Varrendo APIs REST em Larga Escala utilizando PHPVarrendo APIs REST em Larga Escala utilizando PHP
Varrendo APIs REST em Larga Escala utilizando PHPAlexandre Gaigalas
 
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...tdc-globalcode
 
Tunning PostgreSQL em modo OGRO - 13º Latinoware
Tunning PostgreSQL em modo OGRO - 13º LatinowareTunning PostgreSQL em modo OGRO - 13º Latinoware
Tunning PostgreSQL em modo OGRO - 13º LatinowareGerdan Santos
 
Sistemas Distribuídos - Publish-Subscribe - Kafka
Sistemas Distribuídos - Publish-Subscribe - KafkaSistemas Distribuídos - Publish-Subscribe - Kafka
Sistemas Distribuídos - Publish-Subscribe - KafkaNatã Melo
 
Tunando sua aplicação LNMP
Tunando sua aplicação LNMPTunando sua aplicação LNMP
Tunando sua aplicação LNMPLeandro Mendes
 
Performance no MongoDB - TDC 2017 | Florianópolis
Performance no MongoDB - TDC 2017 | FlorianópolisPerformance no MongoDB - TDC 2017 | Florianópolis
Performance no MongoDB - TDC 2017 | FlorianópolisJefferson Martins de Andrade
 
Elasticsearch: o desafio como banco principal e cuidados em produção
Elasticsearch: o desafio como banco principal e cuidados em produçãoElasticsearch: o desafio como banco principal e cuidados em produção
Elasticsearch: o desafio como banco principal e cuidados em produçãoBruna Alves
 
Java Virtual Threads.pptx
Java Virtual Threads.pptxJava Virtual Threads.pptx
Java Virtual Threads.pptxssuser980608
 
Fisl banco de dados no sql de código aberto
Fisl   banco de dados no sql de código abertoFisl   banco de dados no sql de código aberto
Fisl banco de dados no sql de código abertoSuissa
 
Monitoramento Enterprise com Zabbix+RHEL
Monitoramento Enterprise com Zabbix+RHELMonitoramento Enterprise com Zabbix+RHEL
Monitoramento Enterprise com Zabbix+RHELAlessandro Silva
 

Semelhante a Como lidar com cargas de trabalho mistas em PostgreSQL (20)

Postgresql 50 Sabores - PgDay Ceará 2013
Postgresql 50 Sabores - PgDay Ceará 2013Postgresql 50 Sabores - PgDay Ceará 2013
Postgresql 50 Sabores - PgDay Ceará 2013
 
Bancos de dados analíticos open source
Bancos de dados analíticos open sourceBancos de dados analíticos open source
Bancos de dados analíticos open source
 
Aumente a performance de seu site de maneira disciplinada
Aumente a performance de seu site de maneira disciplinadaAumente a performance de seu site de maneira disciplinada
Aumente a performance de seu site de maneira disciplinada
 
PostgreSQL: O melhor banco de dados Universo
PostgreSQL: O melhor banco de dados UniversoPostgreSQL: O melhor banco de dados Universo
PostgreSQL: O melhor banco de dados Universo
 
Node.JS - Workshop do básico ao avançado
Node.JS - Workshop do básico ao avançadoNode.JS - Workshop do básico ao avançado
Node.JS - Workshop do básico ao avançado
 
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
 
Secot banco de dados no sql de código aberto
Secot   banco de dados no sql de código abertoSecot   banco de dados no sql de código aberto
Secot banco de dados no sql de código aberto
 
Teste de performance com JMeter: como criar e executar os testes em aplicaçõe...
Teste de performance com JMeter: como criar e executar os testes em aplicaçõe...Teste de performance com JMeter: como criar e executar os testes em aplicaçõe...
Teste de performance com JMeter: como criar e executar os testes em aplicaçõe...
 
Varrendo APIs REST em Larga Escala utilizando PHP
Varrendo APIs REST em Larga Escala utilizando PHPVarrendo APIs REST em Larga Escala utilizando PHP
Varrendo APIs REST em Larga Escala utilizando PHP
 
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
 
Tunning PostgreSQL em modo OGRO - 13º Latinoware
Tunning PostgreSQL em modo OGRO - 13º LatinowareTunning PostgreSQL em modo OGRO - 13º Latinoware
Tunning PostgreSQL em modo OGRO - 13º Latinoware
 
Sistemas Distribuídos - Publish-Subscribe - Kafka
Sistemas Distribuídos - Publish-Subscribe - KafkaSistemas Distribuídos - Publish-Subscribe - Kafka
Sistemas Distribuídos - Publish-Subscribe - Kafka
 
Tunando sua aplicação LNMP
Tunando sua aplicação LNMPTunando sua aplicação LNMP
Tunando sua aplicação LNMP
 
Performance no MongoDB - TDC 2017 | Florianópolis
Performance no MongoDB - TDC 2017 | FlorianópolisPerformance no MongoDB - TDC 2017 | Florianópolis
Performance no MongoDB - TDC 2017 | Florianópolis
 
Elasticsearch: o desafio como banco principal e cuidados em produção
Elasticsearch: o desafio como banco principal e cuidados em produçãoElasticsearch: o desafio como banco principal e cuidados em produção
Elasticsearch: o desafio como banco principal e cuidados em produção
 
Putting a-heat-with-thermostat
Putting a-heat-with-thermostatPutting a-heat-with-thermostat
Putting a-heat-with-thermostat
 
Java Virtual Threads.pptx
Java Virtual Threads.pptxJava Virtual Threads.pptx
Java Virtual Threads.pptx
 
Fisl banco de dados no sql de código aberto
Fisl   banco de dados no sql de código abertoFisl   banco de dados no sql de código aberto
Fisl banco de dados no sql de código aberto
 
Dev vs. Ops
Dev vs. OpsDev vs. Ops
Dev vs. Ops
 
Monitoramento Enterprise com Zabbix+RHEL
Monitoramento Enterprise com Zabbix+RHELMonitoramento Enterprise com Zabbix+RHEL
Monitoramento Enterprise com Zabbix+RHEL
 

Mais de Diego Santos

OpenLDAP, criando e explorando um overlay
OpenLDAP, criando e explorando um overlayOpenLDAP, criando e explorando um overlay
OpenLDAP, criando e explorando um overlayDiego Santos
 
KDC Spoofing com Kerberos MIT
KDC Spoofing com Kerberos MITKDC Spoofing com Kerberos MIT
KDC Spoofing com Kerberos MITDiego Santos
 
Arquiteturas híbridas de atendimento em Cloud Computing para otimizar o uso d...
Arquiteturas híbridas de atendimento em Cloud Computing para otimizar o uso d...Arquiteturas híbridas de atendimento em Cloud Computing para otimizar o uso d...
Arquiteturas híbridas de atendimento em Cloud Computing para otimizar o uso d...Diego Santos
 
IaaS: Implantação e gerenciamento de configurações de ambientes Cloud usando...
 IaaS: Implantação e gerenciamento de configurações de ambientes Cloud usando... IaaS: Implantação e gerenciamento de configurações de ambientes Cloud usando...
IaaS: Implantação e gerenciamento de configurações de ambientes Cloud usando...Diego Santos
 
Tenha mais tempo e gerencie seus processos com a Bonita
Tenha mais tempo e gerencie seus processos com a BonitaTenha mais tempo e gerencie seus processos com a Bonita
Tenha mais tempo e gerencie seus processos com a BonitaDiego Santos
 
Socialize os sites da sua empresa com eXo Platform
Socialize os sites da sua empresa com eXo PlatformSocialize os sites da sua empresa com eXo Platform
Socialize os sites da sua empresa com eXo PlatformDiego Santos
 
Programando Software Livre em C
Programando Software Livre em CProgramando Software Livre em C
Programando Software Livre em CDiego Santos
 
Análise estática de malware com o pev
Análise estática de malware com o pevAnálise estática de malware com o pev
Análise estática de malware com o pevDiego Santos
 
Testes em aplicações JEE: Montando sua infra de testes automatizados
Testes em aplicações JEE: Montando sua infra de testes automatizadosTestes em aplicações JEE: Montando sua infra de testes automatizados
Testes em aplicações JEE: Montando sua infra de testes automatizadosDiego Santos
 
Formando Desenvolvedores Efetivos
Formando Desenvolvedores EfetivosFormando Desenvolvedores Efetivos
Formando Desenvolvedores EfetivosDiego Santos
 
As grandes novidades do JSF 2.0!
As grandes novidades do JSF 2.0!As grandes novidades do JSF 2.0!
As grandes novidades do JSF 2.0!Diego Santos
 
Webcast Tutorial: Análise de dumps de memória no GNU/Linux
Webcast Tutorial: Análise de dumps de memória no GNU/LinuxWebcast Tutorial: Análise de dumps de memória no GNU/Linux
Webcast Tutorial: Análise de dumps de memória no GNU/LinuxDiego Santos
 
Análise de malware com software livre
Análise de malware com software livreAnálise de malware com software livre
Análise de malware com software livreDiego Santos
 

Mais de Diego Santos (14)

Cloud é Linux
Cloud é LinuxCloud é Linux
Cloud é Linux
 
OpenLDAP, criando e explorando um overlay
OpenLDAP, criando e explorando um overlayOpenLDAP, criando e explorando um overlay
OpenLDAP, criando e explorando um overlay
 
KDC Spoofing com Kerberos MIT
KDC Spoofing com Kerberos MITKDC Spoofing com Kerberos MIT
KDC Spoofing com Kerberos MIT
 
Arquiteturas híbridas de atendimento em Cloud Computing para otimizar o uso d...
Arquiteturas híbridas de atendimento em Cloud Computing para otimizar o uso d...Arquiteturas híbridas de atendimento em Cloud Computing para otimizar o uso d...
Arquiteturas híbridas de atendimento em Cloud Computing para otimizar o uso d...
 
IaaS: Implantação e gerenciamento de configurações de ambientes Cloud usando...
 IaaS: Implantação e gerenciamento de configurações de ambientes Cloud usando... IaaS: Implantação e gerenciamento de configurações de ambientes Cloud usando...
IaaS: Implantação e gerenciamento de configurações de ambientes Cloud usando...
 
Tenha mais tempo e gerencie seus processos com a Bonita
Tenha mais tempo e gerencie seus processos com a BonitaTenha mais tempo e gerencie seus processos com a Bonita
Tenha mais tempo e gerencie seus processos com a Bonita
 
Socialize os sites da sua empresa com eXo Platform
Socialize os sites da sua empresa com eXo PlatformSocialize os sites da sua empresa com eXo Platform
Socialize os sites da sua empresa com eXo Platform
 
Programando Software Livre em C
Programando Software Livre em CProgramando Software Livre em C
Programando Software Livre em C
 
Análise estática de malware com o pev
Análise estática de malware com o pevAnálise estática de malware com o pev
Análise estática de malware com o pev
 
Testes em aplicações JEE: Montando sua infra de testes automatizados
Testes em aplicações JEE: Montando sua infra de testes automatizadosTestes em aplicações JEE: Montando sua infra de testes automatizados
Testes em aplicações JEE: Montando sua infra de testes automatizados
 
Formando Desenvolvedores Efetivos
Formando Desenvolvedores EfetivosFormando Desenvolvedores Efetivos
Formando Desenvolvedores Efetivos
 
As grandes novidades do JSF 2.0!
As grandes novidades do JSF 2.0!As grandes novidades do JSF 2.0!
As grandes novidades do JSF 2.0!
 
Webcast Tutorial: Análise de dumps de memória no GNU/Linux
Webcast Tutorial: Análise de dumps de memória no GNU/LinuxWebcast Tutorial: Análise de dumps de memória no GNU/Linux
Webcast Tutorial: Análise de dumps de memória no GNU/Linux
 
Análise de malware com software livre
Análise de malware com software livreAnálise de malware com software livre
Análise de malware com software livre
 

Como lidar com cargas de trabalho mistas em PostgreSQL

  • 1. PGBR 2013 Como lidar com cargas de trabalho mistas Flavio Gurgel
  • 2. 2 Flavio Gurgel ● Engenheiro eletricista - UFPR ● Líder de projetos especiais – 4Linux ● EnterpriseDB Certified Postgres Plus Associate ● Experiência: ● 18 anos - DBA ● 14 anos - PostgreSQL ● 4 anos – Comunidade brasileira PostgreSQL
  • 3. 3 OLTP ● Transações rápidas ● Volume alto ● Poucas linhas de cada vez ● Maioria escrita ● INSERT, UPDATE, DELETE ● Operacional
  • 4. 4 OLAP ● Transações lentas ● Volume menor ● Muitas linhas ● Maioria leitura ● SELECTs complexos ● Analítico
  • 5. 5 WEB ● Saída do preto e branco ● Adaptação para o mundo Internet ● Intermediário entre OLTP e OLAP
  • 6. 6 OLTP em PostgreSQL ● Priorizar escrita ● pg_xlog separado em discos rápidos ● shared_buffers mais alto ● work_mem mais baixo ● Poucas conexões ● Tuning dos parâmetros WAL ● Tuning do autovacuum ● Índices na dose certa ● Tablespaces onde necessário
  • 7. 7 OLAP em PostgreSQL ● Priorizar leitura ● Algumas tabelas em tablespaces próprias ● Tablespaces em discos rápidos ● work_mem mais alto ● shared_buffers mais baixo ● Tuning dos parâmetros de custo ● Menos conexões ainda ● Maior abundância de índices
  • 8. 8 Web em PostgreSQL Algo entre os dois anteriores
  • 9. 9 A loucura Os três modelos anteriores... ...no mesmo banco de dados! Tudo bem grande. Lembrete: tem que ser rápido, CLARO.
  • 11. 11 Já ia me esquecendo Tem uma pitada de linguagem procedural também.
  • 12. 12 Assim Sistema Transacional Rápido ETL Banco de dados em RAM Sistema Web do Recente Usuários Alertas Sistema OLAP do Histórico Sistema Alerta Tabelas e pl/PgSQL
  • 13. 13 O que faz essa joça? ● Coleta os dados OLTP ● Faz um data mining dedicado: ● Detecta padrões em tempo real (Alertas) ● Permite análise manual do que foi alertado (Web) ● Permite análise refinada, posterior, cruzamentos e relatórios (Histórico, OLAP)
  • 14. 14 Quem usa isso? ● Quem precisa de detecção em tempo real, alerta e análise, exemplos: ● Trânsito – Detecção de gargalos ● Meteorologia – Prevenção de fenômenos ● Bancos - Prevenção à fraude ● Bolsa de valores – Ativação de circuit-breaker ● Energia – Preparação para picos de consumo ● Telefonia – Prevenção à clonagem
  • 16. 16 2. Muita memória ● Usar shared_buffers de OLTP ● Usar usuários separados para cada coisa ● OLTP, WEB e OLAP ● ETL ● Se possível segmentar mais ● work_mem individual
  • 17. 17 3. Tablespaces ● Testar, testar ● Medir pg_statio_user_tables ● Verificar heap_blks_read e heap_blks_hit ● Medir pg_statio_user_indexes ● Verificar idx_blks_read e idx_blks_hit ● Separar quem usa mais
  • 18. 18 3. Tablespaces ● select relname, heap_blks_read + heap_blks_hit as heap_usage from pg_statio_user_tables order by 2 desc; ● relname | heap_usage ● --------------------+------------ ● tabela1 | 6020 ● tabela2 | 932 ● tabela3 | 5 ● tabela4 | 1 Tablespace 1 Tablespace 2
  • 19. 19 4. Funções ● Simples e diretas ● Abusar - INSERT INTO foo SELECT... ● Cautela - tabelas temporárias ● Evitar – loops ● Preferir SELECTs complicados ao invés de loops
  • 20. 20 5. Testar muito ● Ter sempre dados de teste bons ● Próximos da realidade ● Em grande volume ● Testar cada função individualmente ● Testar cada consulta individualmente ● Otimizar uma coisa de cada vez ● NUNCA ASSUMIR POR ACHISMO!
  • 21. 21 6. Já em produção ● O log é meu melhor amigo ● PgBadger meu fiel escudeiro ● Escolha o pior e otimize primeiro ● Fazer uma otimização de cada vez ● Sempre verificar o impacto no resto ● NUNCA ASSUMIR POR ACHISMO!
  • 22. 22 Importante ● Entender estatísticas do PostgreSQL ● pg_stat_* ● pg_statio_* ● Entender resultados do PgBagder ● Não existe mágica ● Não é para principiantes (sozinhos) ● Que são sempre bem vindos para contribuir e aprender juntos
  • 23. 23 Conclusão ● Existe trabalho também embaixo do capô ● Discos ● Sistema de arquivos ● Hardware bem comprado e montado ● Demais dicas PostgreSQL
  • 24. 24 Obrigado! ● Flavio Henrique Araque Gurgel ● flavio@4linux.com.br ● O nome mais forte em integração Open Source no Brasil ● O maior case Open Source em missão crítica: Caixa Econômica Federal ● Mais de 50.000 alunos treinados ● Mais de 10 anos apenas com Open Source ● Equipe multidisciplinar: analistas de negócios, programadores, arquitetos, sysadmins e gerentes de projetos. ● Quando pega um desafio, sai do outro lado ● Parceira Red Hat, Zend, Puppetlabs, EnterpriseDB ● Orientada a padrões abertos e melhores práticas