SlideShare uma empresa Scribd logo
Otimizando suas Querys no PostgreSQL
XIV Fórum Goiano de Software Livre
Jean Pierre Monteiro Queiroz
Agenda
● Otimizador/Planejador
● Analyze
● Ferramentas de análise
● Índices
● Paralelismo
● Dicas Consultas Eficientes
● O que é o plano de execução ?
● Explain SELECT pessoa.nome,pessoa.cpf FROM pessoa WHERE pessoa.nome ILIKE ‘%pedro%’
Seq Scan on pessoa (cost=0.00..2346.66 rows=492 width=39)
Filter: ((nome)::text ~~* '%pedro%'::text)
● Explain Analyze SELECT pessoa.nome,pessoa.cpf FROM pessoa WHERE pessoa.nome ILIKE
‘%pedro%’
Seq Scan on pessoa (cost=0.00..2346.66 rows=492 width=39) (actual time=26.338..158.150 rows=423 loops=1)
Filter: ((nome)::text ~~* '%pedro%'::text)
Rows Removed by Filter: 48670
Planning time: 0.666 ms
Execution time: 158.259 ms
Otimizador/Planejador
● Analyze
● Vaccum Analyze
Analyze
● pgBadger
● pg_stat_statements
1 - Adicione a configuração abaixo no postgresql.conf:
shared_preload_libraries = 'pg_stat_statements'
# Increase the max size of the query strings Postgres records
track_activity_query_size = 2048
# Track statements generated by stored procedures as well
pg_stat_statements.track = all
2 - reiniciar o serviço do postgreSQL
3 - CREATE EXTENSION pg_stat_statements;
Como identificar Query’s lentas ?
● Busca sequencial vs Busca indexada
● Índice Btree
● Índice GIN
● O planejador opta por realizar uma busca sequencial em tabelas
menores.
● O planejador utilizará o índice apenas quando sua Query’s for
seletiva.Se você criar um índice em uma coluna situação por
exemplo,que contemple 50 % dos registros,o planejador irá realizar
uma busca sequencial em toda a tabela.
Índices
Consultas paralelas no PostgreSQL
● max_parallel_workers_per_gather
● Nível de Banco de Dados
● Nível de Sessão
● Sequential Scan Parallelisation
● Parallel Aggregate Functions
● Parallel Joins
● O planejador altera a ordem dos joins conforme o parâmetro
join_collapse_limit que por padrão é 8.Caso a query realize até 8
joins o planejador irá alterar a ordem de acordo com o melhor
plano.Não é aconselhado alterar esse valor,caso a query tenha
mais de 8 uma dica é colocar primeiro as tabelas que sofre filtros
no predicado.
● EXISTS vs IN
● WITH Queries (Common Table Expressions).
● Para carga de dados utilize o COPY e não o INSERT.
Dicas de melhores práticas
Até aqui é isso
Dúvidas ?
jean.aparecida@gmail.com
https://twitter.com/jpierremq
https://github.com/jeanpierremq

Mais conteúdo relacionado

PDF
Análise de performance usando as estatísticas do PostgreSQL
PDF
Melhorando o desempenho de suas consultas no MySql
PPTX
Módulo 1 - Slides - do Curso de Introdução a Java.pptx
PPTX
SQL Server ES - Escrevendo queries rápidas (Performance/Query Tuning)
PDF
Full Text Search - Busca Textual no PostgreSQL
PDF
PGDay Campinas 2013 - Como Full Text Search pode ajudar na busca textual
PDF
11-codigo-limpo-parte-4.pdf
PDF
Postgresql como NewSQL - DevCamp 2014
Análise de performance usando as estatísticas do PostgreSQL
Melhorando o desempenho de suas consultas no MySql
Módulo 1 - Slides - do Curso de Introdução a Java.pptx
SQL Server ES - Escrevendo queries rápidas (Performance/Query Tuning)
Full Text Search - Busca Textual no PostgreSQL
PGDay Campinas 2013 - Como Full Text Search pode ajudar na busca textual
11-codigo-limpo-parte-4.pdf
Postgresql como NewSQL - DevCamp 2014

Semelhante a Otimizando suas querys no postgreSQL (20)

PPTX
Elasticsearch
PDF
Bancos de dados analíticos open source
PDF
Uma implementação de suporte a
PPTX
Treinamento Elasticsearch - Parte 2
PDF
PL/Python: Programando em Python no PostgreSQL
PDF
Utilizando Machine Learning e Java para classificar o conteúdo de páginas Web
PDF
Uso de estatísticas pelo postgre sql
PDF
Perfomance em MySQL
PDF
Processos Escalonamento e Sistemas Operacionais
ODP
Hibernate-consultas
PDF
Boas praticas em um Projeto de Banco de Dados
PDF
24H PASS PT-BR 10 Dicas para escrever códigos t-sql melhores
PDF
pgDay Campinas – 2015
PDF
Refactoring Databases - Estrategias
PPT
TechEd_OFC305
DOCX
P funcional
PDF
Análise de desempenho de algoritmos de ordenação
PPT
Aula 01
PPT
Aula3
PDF
Por que PostgreSQL?
Elasticsearch
Bancos de dados analíticos open source
Uma implementação de suporte a
Treinamento Elasticsearch - Parte 2
PL/Python: Programando em Python no PostgreSQL
Utilizando Machine Learning e Java para classificar o conteúdo de páginas Web
Uso de estatísticas pelo postgre sql
Perfomance em MySQL
Processos Escalonamento e Sistemas Operacionais
Hibernate-consultas
Boas praticas em um Projeto de Banco de Dados
24H PASS PT-BR 10 Dicas para escrever códigos t-sql melhores
pgDay Campinas – 2015
Refactoring Databases - Estrategias
TechEd_OFC305
P funcional
Análise de desempenho de algoritmos de ordenação
Aula 01
Aula3
Por que PostgreSQL?
Anúncio

Último (19)

PDF
Apple Pippin Uma breve introdução. - David Glotz
PPTX
Gestao-de-Bugs-em-Software-Introducao.pptxxxxxxxx
PDF
Otimizador de planejamento e execução no SAP Transportation Management, TM120...
PDF
Custos e faturamento no SAP S/4HANA Transportation Management, S4TM3 Col26
PPTX
BANCO DE DADOS - AULAS INICIAIS-sgbd.pptx
PPTX
Programação - Linguagem C - Variáveis, Palavras Reservadas, tipos de dados, c...
PDF
Custos e liquidação no SAP Transportation Management, TM130 Col18
PDF
20250805_ServiceNow e a Arquitetura Orientada a Serviços (SOA) A Base para Ap...
PPTX
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...
PDF
COBITxITIL-Entenda as diferença em uso governança TI
PPTX
Aula 18 - Manipulacao De Arquivos python
PPTX
Como-se-implementa-um-softwareeeeeeeeeeeeeeeeeeeeeeeee.pptx
PDF
Gestão de transportes básica no SAP S/4HANA, S4611 Col20
PDF
Mergulho profundo técnico para gestão de transportes no SAP S/4HANA, S4TM6 Col14
PDF
Fundamentos de gerenciamento de ordens e planejamento no SAP TransportationMa...
PDF
Aula04-Academia Heri- Tecnologia Geral 2025
PDF
Fullfilment AI - Forum ecommerce 2025 // Distrito e Total Express
PPTX
Aula16ManipulaçãoDadosssssssssssssssssssssssssssss
PDF
Processos na gestão de transportes, TM100 Col18
Apple Pippin Uma breve introdução. - David Glotz
Gestao-de-Bugs-em-Software-Introducao.pptxxxxxxxx
Otimizador de planejamento e execução no SAP Transportation Management, TM120...
Custos e faturamento no SAP S/4HANA Transportation Management, S4TM3 Col26
BANCO DE DADOS - AULAS INICIAIS-sgbd.pptx
Programação - Linguagem C - Variáveis, Palavras Reservadas, tipos de dados, c...
Custos e liquidação no SAP Transportation Management, TM130 Col18
20250805_ServiceNow e a Arquitetura Orientada a Serviços (SOA) A Base para Ap...
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...
COBITxITIL-Entenda as diferença em uso governança TI
Aula 18 - Manipulacao De Arquivos python
Como-se-implementa-um-softwareeeeeeeeeeeeeeeeeeeeeeeee.pptx
Gestão de transportes básica no SAP S/4HANA, S4611 Col20
Mergulho profundo técnico para gestão de transportes no SAP S/4HANA, S4TM6 Col14
Fundamentos de gerenciamento de ordens e planejamento no SAP TransportationMa...
Aula04-Academia Heri- Tecnologia Geral 2025
Fullfilment AI - Forum ecommerce 2025 // Distrito e Total Express
Aula16ManipulaçãoDadosssssssssssssssssssssssssssss
Processos na gestão de transportes, TM100 Col18
Anúncio

Otimizando suas querys no postgreSQL

  • 1. Otimizando suas Querys no PostgreSQL XIV Fórum Goiano de Software Livre Jean Pierre Monteiro Queiroz
  • 2. Agenda ● Otimizador/Planejador ● Analyze ● Ferramentas de análise ● Índices ● Paralelismo ● Dicas Consultas Eficientes
  • 3. ● O que é o plano de execução ? ● Explain SELECT pessoa.nome,pessoa.cpf FROM pessoa WHERE pessoa.nome ILIKE ‘%pedro%’ Seq Scan on pessoa (cost=0.00..2346.66 rows=492 width=39) Filter: ((nome)::text ~~* '%pedro%'::text) ● Explain Analyze SELECT pessoa.nome,pessoa.cpf FROM pessoa WHERE pessoa.nome ILIKE ‘%pedro%’ Seq Scan on pessoa (cost=0.00..2346.66 rows=492 width=39) (actual time=26.338..158.150 rows=423 loops=1) Filter: ((nome)::text ~~* '%pedro%'::text) Rows Removed by Filter: 48670 Planning time: 0.666 ms Execution time: 158.259 ms Otimizador/Planejador
  • 4. ● Analyze ● Vaccum Analyze Analyze
  • 5. ● pgBadger ● pg_stat_statements 1 - Adicione a configuração abaixo no postgresql.conf: shared_preload_libraries = 'pg_stat_statements' # Increase the max size of the query strings Postgres records track_activity_query_size = 2048 # Track statements generated by stored procedures as well pg_stat_statements.track = all 2 - reiniciar o serviço do postgreSQL 3 - CREATE EXTENSION pg_stat_statements; Como identificar Query’s lentas ?
  • 6. ● Busca sequencial vs Busca indexada ● Índice Btree ● Índice GIN ● O planejador opta por realizar uma busca sequencial em tabelas menores. ● O planejador utilizará o índice apenas quando sua Query’s for seletiva.Se você criar um índice em uma coluna situação por exemplo,que contemple 50 % dos registros,o planejador irá realizar uma busca sequencial em toda a tabela. Índices
  • 7. Consultas paralelas no PostgreSQL ● max_parallel_workers_per_gather ● Nível de Banco de Dados ● Nível de Sessão ● Sequential Scan Parallelisation ● Parallel Aggregate Functions ● Parallel Joins
  • 8. ● O planejador altera a ordem dos joins conforme o parâmetro join_collapse_limit que por padrão é 8.Caso a query realize até 8 joins o planejador irá alterar a ordem de acordo com o melhor plano.Não é aconselhado alterar esse valor,caso a query tenha mais de 8 uma dica é colocar primeiro as tabelas que sofre filtros no predicado. ● EXISTS vs IN ● WITH Queries (Common Table Expressions). ● Para carga de dados utilize o COPY e não o INSERT. Dicas de melhores práticas
  • 9. Até aqui é isso Dúvidas ? jean.aparecida@gmail.com https://twitter.com/jpierremq https://github.com/jeanpierremq