SlideShare a Scribd company logo
1 of 16
Download to read offline
PGDAY Campinas – 2016PGDAY Campinas – 2016
PostgreSQL – OtimizaçãoPostgreSQL – Otimização
ContextualizaçãoContextualização
● Utilização de PostgreSQL desde 2001
– 7.2, 7.4, 8.0, 8.2, 9.1, 9.2, 9.4, 9.5 ….
● Cenários distintos
– Servidores com um grande BD, replicados
– Servidores com muitos BDs (~ 400), de tamanhos
distintos (entre 20 MB e 10GB) e muitos usuários
simultâneos, replicados
● ~ 400 tabelas, 180.000 CTRCs emitidos/mês
ContextualizaçãoContextualização
O sistema está lento!O sistema está lento!
● Mais Frete
– Aproximadamente 3.000 arquivos
● Todos acessam o banco de dados
Quem causa lentidão? ?
– Normalmente consultas
● Exceção: cargas de dados
Análise de custo de execuçãoAnálise de custo de execução
● EXPLAIN
– Custo = leitura de páginas de disco
– Analyze: executa efetivamente a consulta
● Atenção: teste efetivamente suas alterações
● CTRC
– Conhecimento de Transporte Rodoviário de Carga
● CT-e
ÍndicesÍndices
● Formas de busca
– Sequenciais
– Indexadas
● Diversos tipos de
índice
● Consultas de 01 a 04
● Custo
– Tempo de criação
– Espaço utilizado
● Mulltiplicar por 400
– Nem sempre
utilizados
– Consultas 05 a 08
ÍndicesÍndices
● Otimização de performance
– Menor amostra
● Consultas 09 a 12
● Redução de espaço utilizado
– Partial index
● Consultas 13 e 14
Ordenação de JOINsOrdenação de JOINs
● A sequencia dos JOINs pode interferir no
plano de execução da consulta
– Priorizar tabelas filtradas e/ou indexadas
– Consultas 15 a 18 (vi / vimdiff)
– join_collapse_limit
Uso do WITHUso do WITH
● Similar a uma tabela temporária
– Válido por uma consulta
● Substitui
– SUBSELECTs no WHERE
– JOINs com grande tabelas ou não indexados
– Consultas 19 a 23
● Não altera pg_attribute
Performance em Instruções SemelhantesPerformance em Instruções Semelhantes
● Instruções semanticamente idênticas podem
possuir planos de execução distintos
– Consultas 24 e 25
Window FunctionsWindow Functions
● Evitam sub-SQLs
● Possibilitam ranqueamento,
– Consultas 26 a 29
Outras alternativasOutras alternativas
● Hardware
– Discos
– Memória
– Processador
● Configuração
– work_mem
– statement_timeout
EstatísticasEstatísticas
● Tabelas mudam
– Índices antigos não refletem mais realidade atual
– ANALYZE
● Alterações e exclusões
– Não apagam fisicamente
● VACUUM e VACUUM FULL;
● Autovacuum
HistóricoHistórico
● Atua Sistemas de Informação
– Fundada em 2001
● Sistemas para Transportadoras (Mais Frete, Mais Frota)
● Desenvolvidos em PHP e PostgreSQL
● Jaguar
– Infraestrutura de Rede
– Outros sistemas (Mais Contratos, Efesus …)
– Equipe: ~ 40 colaboradores (Set/2016)
● Desenvolvimento, Redes, Suporte, Comercial e Adm
● Crescimento
A AtuaA Atua
Dúvidas?Dúvidas?
Álvaro Nunes Melo
alvaro@atua.com.br
www.atua.com.br/vagas/
facebook.com/AtuaSistemas

More Related Content

Viewers also liked

Greenplum: O banco de dados open source massivamente paralelo baseado em Post...
Greenplum: O banco de dados open source massivamente paralelo baseado em Post...Greenplum: O banco de dados open source massivamente paralelo baseado em Post...
Greenplum: O banco de dados open source massivamente paralelo baseado em Post...PGDay Campinas
 
Курс лекций на программу МВА в РУДН 16 февраля 2016 Тема "Управление изменени...
Курс лекций на программу МВА в РУДН 16 февраля 2016 Тема "Управление изменени...Курс лекций на программу МВА в РУДН 16 февраля 2016 Тема "Управление изменени...
Курс лекций на программу МВА в РУДН 16 февраля 2016 Тема "Управление изменени...Андрей Анатольевич Ващенко
 
יחידת הוראה לחנכה
יחידת הוראה לחנכהיחידת הוראה לחנכה
יחידת הוראה לחנכהMax Rokach
 
NoSQL + SQL = PostgreSQL (TDC2014 - Porto Alegre/RS)
NoSQL + SQL = PostgreSQL (TDC2014 - Porto Alegre/RS)NoSQL + SQL = PostgreSQL (TDC2014 - Porto Alegre/RS)
NoSQL + SQL = PostgreSQL (TDC2014 - Porto Alegre/RS)Fabrízio Mello
 
Bad Smells (mal cheiros) em Bancos de Dados
Bad Smells (mal cheiros) em Bancos de DadosBad Smells (mal cheiros) em Bancos de Dados
Bad Smells (mal cheiros) em Bancos de DadosFabrízio Mello
 
GSoC2014 - PGCon2015 Presentation June, 2015
GSoC2014 - PGCon2015 Presentation June, 2015GSoC2014 - PGCon2015 Presentation June, 2015
GSoC2014 - PGCon2015 Presentation June, 2015Fabrízio Mello
 
GSoC2014 - PGDay Ijui/RS Presentation October, 2016
GSoC2014 - PGDay Ijui/RS Presentation October, 2016 GSoC2014 - PGDay Ijui/RS Presentation October, 2016
GSoC2014 - PGDay Ijui/RS Presentation October, 2016 Fabrízio Mello
 
Sharing Code and Experiences
Sharing Code and ExperiencesSharing Code and Experiences
Sharing Code and ExperiencesFabrízio Mello
 
GSoC2014 - Uniritter Presentation May, 2015
GSoC2014 - Uniritter Presentation May, 2015GSoC2014 - Uniritter Presentation May, 2015
GSoC2014 - Uniritter Presentation May, 2015Fabrízio Mello
 
Keep calm and Database Continuous Deployment
Keep calm and Database Continuous DeploymentKeep calm and Database Continuous Deployment
Keep calm and Database Continuous DeploymentFabrízio Mello
 
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
 
Como posso colaborar com o PostgreSQL
Como posso colaborar com o PostgreSQLComo posso colaborar com o PostgreSQL
Como posso colaborar com o PostgreSQLFabrízio Mello
 
Gerenciamento de Backup e Recovery com o Barman
Gerenciamento de Backup e Recovery com o BarmanGerenciamento de Backup e Recovery com o Barman
Gerenciamento de Backup e Recovery com o BarmanCaio Oliveira
 
PGDay Campinas 2013 - Window Function e CTE – Surpreendente
PGDay Campinas 2013 - Window Function e CTE – SurpreendentePGDay Campinas 2013 - Window Function e CTE – Surpreendente
PGDay Campinas 2013 - Window Function e CTE – SurpreendentePGDay Campinas
 
PGAnalytics - Facilitando sua vida do DBA
PGAnalytics - Facilitando sua vida do DBAPGAnalytics - Facilitando sua vida do DBA
PGAnalytics - Facilitando sua vida do DBADextra
 
PGDay Campinas 2013 - Mineração de Dados com MADlib
PGDay Campinas 2013 - Mineração de Dados com MADlibPGDay Campinas 2013 - Mineração de Dados com MADlib
PGDay Campinas 2013 - Mineração de Dados com MADlibPGDay Campinas
 
Jaime Casanova - Domando a la bestia Replicación
Jaime Casanova - Domando a la bestia ReplicaciónJaime Casanova - Domando a la bestia Replicación
Jaime Casanova - Domando a la bestia ReplicaciónPGDay Campinas
 

Viewers also liked (20)

Greenplum: O banco de dados open source massivamente paralelo baseado em Post...
Greenplum: O banco de dados open source massivamente paralelo baseado em Post...Greenplum: O banco de dados open source massivamente paralelo baseado em Post...
Greenplum: O banco de dados open source massivamente paralelo baseado em Post...
 
Курс лекций на программу МВА в РУДН 16 февраля 2016 Тема "Управление изменени...
Курс лекций на программу МВА в РУДН 16 февраля 2016 Тема "Управление изменени...Курс лекций на программу МВА в РУДН 16 февраля 2016 Тема "Управление изменени...
Курс лекций на программу МВА в РУДН 16 февраля 2016 Тема "Управление изменени...
 
יחידת הוראה לחנכה
יחידת הוראה לחנכהיחידת הוראה לחנכה
יחידת הוראה לחנכה
 
Cassandra db
Cassandra dbCassandra db
Cassandra db
 
NoSQL + SQL = PostgreSQL (TDC2014 - Porto Alegre/RS)
NoSQL + SQL = PostgreSQL (TDC2014 - Porto Alegre/RS)NoSQL + SQL = PostgreSQL (TDC2014 - Porto Alegre/RS)
NoSQL + SQL = PostgreSQL (TDC2014 - Porto Alegre/RS)
 
Bad Smells (mal cheiros) em Bancos de Dados
Bad Smells (mal cheiros) em Bancos de DadosBad Smells (mal cheiros) em Bancos de Dados
Bad Smells (mal cheiros) em Bancos de Dados
 
GSoC2014 - PGCon2015 Presentation June, 2015
GSoC2014 - PGCon2015 Presentation June, 2015GSoC2014 - PGCon2015 Presentation June, 2015
GSoC2014 - PGCon2015 Presentation June, 2015
 
GSoC2014 - PGDay Ijui/RS Presentation October, 2016
GSoC2014 - PGDay Ijui/RS Presentation October, 2016 GSoC2014 - PGDay Ijui/RS Presentation October, 2016
GSoC2014 - PGDay Ijui/RS Presentation October, 2016
 
Sharing Code and Experiences
Sharing Code and ExperiencesSharing Code and Experiences
Sharing Code and Experiences
 
GSoC2014 - Uniritter Presentation May, 2015
GSoC2014 - Uniritter Presentation May, 2015GSoC2014 - Uniritter Presentation May, 2015
GSoC2014 - Uniritter Presentation May, 2015
 
Dojo plpgsql
Dojo plpgsqlDojo plpgsql
Dojo plpgsql
 
Keep calm and Database Continuous Deployment
Keep calm and Database Continuous DeploymentKeep calm and Database Continuous Deployment
Keep calm and Database Continuous Deployment
 
Postgres Wonderland - PGDay Cascavél 2013
Postgres Wonderland - PGDay Cascavél 2013Postgres Wonderland - PGDay Cascavél 2013
Postgres Wonderland - PGDay Cascavél 2013
 
Como posso colaborar com o PostgreSQL
Como posso colaborar com o PostgreSQLComo posso colaborar com o PostgreSQL
Como posso colaborar com o PostgreSQL
 
Gerenciamento de Backup e Recovery com o Barman
Gerenciamento de Backup e Recovery com o BarmanGerenciamento de Backup e Recovery com o Barman
Gerenciamento de Backup e Recovery com o Barman
 
PGDay Campinas 2013 - Window Function e CTE – Surpreendente
PGDay Campinas 2013 - Window Function e CTE – SurpreendentePGDay Campinas 2013 - Window Function e CTE – Surpreendente
PGDay Campinas 2013 - Window Function e CTE – Surpreendente
 
Pgday campinas 2015
Pgday campinas 2015Pgday campinas 2015
Pgday campinas 2015
 
PGAnalytics - Facilitando sua vida do DBA
PGAnalytics - Facilitando sua vida do DBAPGAnalytics - Facilitando sua vida do DBA
PGAnalytics - Facilitando sua vida do DBA
 
PGDay Campinas 2013 - Mineração de Dados com MADlib
PGDay Campinas 2013 - Mineração de Dados com MADlibPGDay Campinas 2013 - Mineração de Dados com MADlib
PGDay Campinas 2013 - Mineração de Dados com MADlib
 
Jaime Casanova - Domando a la bestia Replicación
Jaime Casanova - Domando a la bestia ReplicaciónJaime Casanova - Domando a la bestia Replicación
Jaime Casanova - Domando a la bestia Replicación
 

Guia de otimização de consultas em PostgreSQL exemplificado com casos reais | Álvaro Nunes

  • 1. PGDAY Campinas – 2016PGDAY Campinas – 2016 PostgreSQL – OtimizaçãoPostgreSQL – Otimização
  • 2. ContextualizaçãoContextualização ● Utilização de PostgreSQL desde 2001 – 7.2, 7.4, 8.0, 8.2, 9.1, 9.2, 9.4, 9.5 …. ● Cenários distintos – Servidores com um grande BD, replicados – Servidores com muitos BDs (~ 400), de tamanhos distintos (entre 20 MB e 10GB) e muitos usuários simultâneos, replicados ● ~ 400 tabelas, 180.000 CTRCs emitidos/mês
  • 4. O sistema está lento!O sistema está lento! ● Mais Frete – Aproximadamente 3.000 arquivos ● Todos acessam o banco de dados Quem causa lentidão? ? – Normalmente consultas ● Exceção: cargas de dados
  • 5. Análise de custo de execuçãoAnálise de custo de execução ● EXPLAIN – Custo = leitura de páginas de disco – Analyze: executa efetivamente a consulta ● Atenção: teste efetivamente suas alterações ● CTRC – Conhecimento de Transporte Rodoviário de Carga ● CT-e
  • 6. ÍndicesÍndices ● Formas de busca – Sequenciais – Indexadas ● Diversos tipos de índice ● Consultas de 01 a 04 ● Custo – Tempo de criação – Espaço utilizado ● Mulltiplicar por 400 – Nem sempre utilizados – Consultas 05 a 08
  • 7. ÍndicesÍndices ● Otimização de performance – Menor amostra ● Consultas 09 a 12 ● Redução de espaço utilizado – Partial index ● Consultas 13 e 14
  • 8. Ordenação de JOINsOrdenação de JOINs ● A sequencia dos JOINs pode interferir no plano de execução da consulta – Priorizar tabelas filtradas e/ou indexadas – Consultas 15 a 18 (vi / vimdiff) – join_collapse_limit
  • 9. Uso do WITHUso do WITH ● Similar a uma tabela temporária – Válido por uma consulta ● Substitui – SUBSELECTs no WHERE – JOINs com grande tabelas ou não indexados – Consultas 19 a 23 ● Não altera pg_attribute
  • 10. Performance em Instruções SemelhantesPerformance em Instruções Semelhantes ● Instruções semanticamente idênticas podem possuir planos de execução distintos – Consultas 24 e 25
  • 11. Window FunctionsWindow Functions ● Evitam sub-SQLs ● Possibilitam ranqueamento, – Consultas 26 a 29
  • 12. Outras alternativasOutras alternativas ● Hardware – Discos – Memória – Processador ● Configuração – work_mem – statement_timeout
  • 13. EstatísticasEstatísticas ● Tabelas mudam – Índices antigos não refletem mais realidade atual – ANALYZE ● Alterações e exclusões – Não apagam fisicamente ● VACUUM e VACUUM FULL; ● Autovacuum
  • 14. HistóricoHistórico ● Atua Sistemas de Informação – Fundada em 2001 ● Sistemas para Transportadoras (Mais Frete, Mais Frota) ● Desenvolvidos em PHP e PostgreSQL ● Jaguar – Infraestrutura de Rede – Outros sistemas (Mais Contratos, Efesus …) – Equipe: ~ 40 colaboradores (Set/2016) ● Desenvolvimento, Redes, Suporte, Comercial e Adm ● Crescimento