SlideShare uma empresa Scribd logo
1 de 23
Baixar para ler offline
EXPLicando
o
EXPLAIN
Estou com uma query lenta... e
agora o que eu faço?
● Chamo alguém mais esperto que eu?
Estou com uma query lenta... e
agora o que eu faço?
● Chamo alguém mais esperto que eu?
● Amarro uma gilete na ponta de uma corda
e começo com a auto-flagelação (m...-
feelings) ??
Estou com uma query lenta... e
agora o que eu faço?
● Chamo alguém mais esperto que eu?
● Amarro uma gilete na ponta de uma corda e
começo com a auto-flagelação (m...-
feelings) ??
● Paro, respiro fundo e penso?
Então eu decidi pensar... :-)
E quem optou por outro caminho...
desculpe, vai ter que pensar mesmo assim...
Coisas relevantes sobre uma query
lenta
● Vc usa * no SELECT, e na App poucas colunas são
usadas ??
● Junto tabelas gigantes com tabelas grotescas sem
seleção ??
● Tem algum índice associado (aliás eu sei o que é um
índice) ??
● Uso funções e/ou expressões no WHERE ?? (saiba que
existe um lugar especialmente reservado para você “In
the Hell”)
Ainda não sei o que fazer...
Então vamos EXPLicar melhor...
;-)
No PostgreSQL existe um tal de
EXPLAIN, que EXPLica como um
SQL é planejado para ser
posteriormente ser executado, ou
seja, ele mostra o “Query Plan”
A estrutura de um “Query Plan” é
nada mais que uma árvore
composta de “Plan Nodes”
Plan Nodes
● Scans
– Table Scans (Sequential, Index, Bitmap, tid)
– Other Scans (Function, Values, Result)
● Joins
– Nested Loop, Merge, Hash
● Set Operations, Partitioned Tables (Inheritance)
– Append
– SetOp Except, Intersect
● Miscellaneous
– Sort, Aggregate, Unique, Limit
– Materialize
– SubPlan, Initplan
Nomenclatura
Nomenclatura
Join Node
Nomenclatura
Scan NodesJoin Node
Nomenclatura
Nomenclatura
Startup Cost
Total Cost
Estimated Rows
Estimated
Average Row
Size (Bytes)
Custo Total
Calculando custo de leitura
sequencial em algumas tabelas
Como usar
EXPLAIN <query>
Como usar
EXPLAIN ANALYZE <query>
Exercício
● Escolher uma query qualquer do e-cidade
● Executar o EXPLAIN e EXPLAIN ANALYZE e
identificar os elementos apresentados
Dúvidas???
EXPLicando o Explain no PostgreSQL

Mais conteúdo relacionado

Mais procurados

Mais procurados (20)

PostgreSQL
PostgreSQLPostgreSQL
PostgreSQL
 
Arquitetura de Memoria do PostgreSQL
Arquitetura de Memoria do PostgreSQLArquitetura de Memoria do PostgreSQL
Arquitetura de Memoria do PostgreSQL
 
Xfs file system for linux
Xfs file system for linuxXfs file system for linux
Xfs file system for linux
 
PostgreSQL and Benchmarks
PostgreSQL and BenchmarksPostgreSQL and Benchmarks
PostgreSQL and Benchmarks
 
PGAnalytics - Facilitando sua vida do DBA
PGAnalytics - Facilitando sua vida do DBAPGAnalytics - Facilitando sua vida do DBA
PGAnalytics - Facilitando sua vida do DBA
 
OpenGurukul : Database : PostgreSQL
OpenGurukul : Database : PostgreSQLOpenGurukul : Database : PostgreSQL
OpenGurukul : Database : PostgreSQL
 
Gerenciamento de Arquivos Nos Sistemas Operacionais
Gerenciamento de Arquivos Nos Sistemas OperacionaisGerenciamento de Arquivos Nos Sistemas Operacionais
Gerenciamento de Arquivos Nos Sistemas Operacionais
 
Postgresql database administration volume 1
Postgresql database administration volume 1Postgresql database administration volume 1
Postgresql database administration volume 1
 
Practical Partitioning in Production with Postgres
Practical Partitioning in Production with PostgresPractical Partitioning in Production with Postgres
Practical Partitioning in Production with Postgres
 
Best Practices for Becoming an Exceptional Postgres DBA
Best Practices for Becoming an Exceptional Postgres DBA Best Practices for Becoming an Exceptional Postgres DBA
Best Practices for Becoming an Exceptional Postgres DBA
 
How We Reduced Performance Tuning Time by Orders of Magnitude with Database O...
How We Reduced Performance Tuning Time by Orders of Magnitude with Database O...How We Reduced Performance Tuning Time by Orders of Magnitude with Database O...
How We Reduced Performance Tuning Time by Orders of Magnitude with Database O...
 
Escalabilidade horizontal com PostgreSQL e Pgpool II
Escalabilidade horizontal com PostgreSQL e Pgpool IIEscalabilidade horizontal com PostgreSQL e Pgpool II
Escalabilidade horizontal com PostgreSQL e Pgpool II
 
Introdução ao BD Postgre
Introdução ao BD PostgreIntrodução ao BD Postgre
Introdução ao BD Postgre
 
Introdução à Lógica de Programação
Introdução à Lógica de ProgramaçãoIntrodução à Lógica de Programação
Introdução à Lógica de Programação
 
Linux Performance Analysis: New Tools and Old Secrets
Linux Performance Analysis: New Tools and Old SecretsLinux Performance Analysis: New Tools and Old Secrets
Linux Performance Analysis: New Tools and Old Secrets
 
Psi-mod-15
Psi-mod-15Psi-mod-15
Psi-mod-15
 
Aula 11 banco de dados
Aula 11   banco de dadosAula 11   banco de dados
Aula 11 banco de dados
 
Estrutura de repetição
Estrutura de repetiçãoEstrutura de repetição
Estrutura de repetição
 
PostgreSQL Database Slides
PostgreSQL Database SlidesPostgreSQL Database Slides
PostgreSQL Database Slides
 
Conceito de processos
Conceito de processosConceito de processos
Conceito de processos
 

Destaque

Extensions on PostgreSQL
Extensions on PostgreSQLExtensions on PostgreSQL
Extensions on PostgreSQL
Alpaca
 

Destaque (20)

Extensions on PostgreSQL
Extensions on PostgreSQLExtensions on PostgreSQL
Extensions on PostgreSQL
 
DevOps e PostgreSQL: Replicação de forma simplificada | Miguel Di Ciurcio
DevOps e PostgreSQL: Replicação de forma simplificada | Miguel Di CiurcioDevOps e PostgreSQL: Replicação de forma simplificada | Miguel Di Ciurcio
DevOps e PostgreSQL: Replicação de forma simplificada | Miguel Di Ciurcio
 
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
 
Keep calm and Database Continuous Deployment
Keep calm and Database Continuous DeploymentKeep calm and Database Continuous Deployment
Keep calm and Database Continuous Deployment
 
Dojo plpgsql
Dojo plpgsqlDojo plpgsql
Dojo plpgsql
 
Como posso colaborar com o PostgreSQL
Como posso colaborar com o PostgreSQLComo posso colaborar com o PostgreSQL
Como posso colaborar com o PostgreSQL
 
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
 
GSoC2014 - PGCon2015 Presentation June, 2015
GSoC2014 - PGCon2015 Presentation June, 2015GSoC2014 - PGCon2015 Presentation June, 2015
GSoC2014 - PGCon2015 Presentation June, 2015
 
Planejador de Consultas do PostgreSQL
Planejador de Consultas do PostgreSQLPlanejador de Consultas do PostgreSQL
Planejador de Consultas do PostgreSQL
 
Bad Smells em Bancos de Dados
Bad Smells em Bancos de DadosBad Smells em Bancos de Dados
Bad Smells em Bancos de Dados
 
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
 
NoSQL + SQL = PostgreSQL (DBA Brasil 1.0 - São Paulo/SP)
NoSQL + SQL = PostgreSQL (DBA Brasil 1.0 - São Paulo/SP) NoSQL + SQL = PostgreSQL (DBA Brasil 1.0 - São Paulo/SP)
NoSQL + SQL = PostgreSQL (DBA Brasil 1.0 - São Paulo/SP)
 
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)
 
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)
 
GSoC2014 - Uniritter Presentation May, 2015
GSoC2014 - Uniritter Presentation May, 2015GSoC2014 - Uniritter Presentation May, 2015
GSoC2014 - Uniritter Presentation May, 2015
 
Sharing Code and Experiences
Sharing Code and ExperiencesSharing Code and Experiences
Sharing Code and Experiences
 
Postgres Wonderland - PGDay Cascavél 2013
Postgres Wonderland - PGDay Cascavél 2013Postgres Wonderland - PGDay Cascavél 2013
Postgres Wonderland - PGDay Cascavél 2013
 
PGDay Campinas 2013 - PL/pg…ETL – Transformação de dados para DW e BI usando ...
PGDay Campinas 2013 - PL/pg…ETL – Transformação de dados para DW e BI usando ...PGDay Campinas 2013 - PL/pg…ETL – Transformação de dados para DW e BI usando ...
PGDay Campinas 2013 - PL/pg…ETL – Transformação de dados para DW e BI usando ...
 
PostgreSQL: How to Store Passwords Safely
PostgreSQL: How to Store Passwords SafelyPostgreSQL: How to Store Passwords Safely
PostgreSQL: How to Store Passwords Safely
 
Курс лекций на программу МВА в РУДН 16 февраля 2016 Тема "Управление изменени...
Курс лекций на программу МВА в РУДН 16 февраля 2016 Тема "Управление изменени...Курс лекций на программу МВА в РУДН 16 февраля 2016 Тема "Управление изменени...
Курс лекций на программу МВА в РУДН 16 февраля 2016 Тема "Управление изменени...
 

Mais de Fabrízio Mello

Oficina postgresql avançado_consegi2010
Oficina postgresql avançado_consegi2010Oficina postgresql avançado_consegi2010
Oficina postgresql avançado_consegi2010
Fabrízio Mello
 
Oficina postgresql basico_consegi2010
Oficina postgresql basico_consegi2010Oficina postgresql basico_consegi2010
Oficina postgresql basico_consegi2010
Fabrízio Mello
 
Database refactoring postgresql_consegi2010
Database refactoring postgresql_consegi2010Database refactoring postgresql_consegi2010
Database refactoring postgresql_consegi2010
Fabrízio Mello
 

Mais de Fabrízio Mello (15)

PHP e PostgreSQL: Um é pouco, dois é bom, três é demais
PHP e PostgreSQL: Um é pouco, dois é bom, três é demaisPHP e PostgreSQL: Um é pouco, dois é bom, três é demais
PHP e PostgreSQL: Um é pouco, dois é bom, três é demais
 
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
 
URCAMP (Jun2017) - Como o papel e atividades de DBA ficam no contexto da cult...
URCAMP (Jun2017) - Como o papel e atividades de DBA ficam no contexto da cult...URCAMP (Jun2017) - Como o papel e atividades de DBA ficam no contexto da cult...
URCAMP (Jun2017) - Como o papel e atividades de DBA ficam no contexto da cult...
 
DBA Brasil 2.0: Como o papel e atividades de DBA ficam no contexto da cultura...
DBA Brasil 2.0: Como o papel e atividades de DBA ficam no contexto da cultura...DBA Brasil 2.0: Como o papel e atividades de DBA ficam no contexto da cultura...
DBA Brasil 2.0: Como o papel e atividades de DBA ficam no contexto da cultura...
 
PROCERGS 2015-03-25: Bad Smells em Bancos de Dados
PROCERGS 2015-03-25: Bad Smells em Bancos de DadosPROCERGS 2015-03-25: Bad Smells em Bancos de Dados
PROCERGS 2015-03-25: Bad Smells em Bancos de Dados
 
Tutorial Database Refactoring
Tutorial Database RefactoringTutorial Database Refactoring
Tutorial Database Refactoring
 
Software Delivery Like a Boss
Software Delivery Like a BossSoftware Delivery Like a Boss
Software Delivery Like a Boss
 
NoSQL + SQL = PostgreSQL (PGDay Campinas 2014)
NoSQL + SQL = PostgreSQL (PGDay Campinas 2014)NoSQL + SQL = PostgreSQL (PGDay Campinas 2014)
NoSQL + SQL = PostgreSQL (PGDay Campinas 2014)
 
Oficina PostgreSQL Básico Latinoware 2012
Oficina PostgreSQL Básico Latinoware 2012Oficina PostgreSQL Básico Latinoware 2012
Oficina PostgreSQL Básico Latinoware 2012
 
Oficina postgresql avançado_consegi2010
Oficina postgresql avançado_consegi2010Oficina postgresql avançado_consegi2010
Oficina postgresql avançado_consegi2010
 
Oficina postgresql basico_consegi2010
Oficina postgresql basico_consegi2010Oficina postgresql basico_consegi2010
Oficina postgresql basico_consegi2010
 
Database refactoring postgresql_consegi2010
Database refactoring postgresql_consegi2010Database refactoring postgresql_consegi2010
Database refactoring postgresql_consegi2010
 
Database Refactoring PostgreSQL Urcamp Alegrete 2009
Database Refactoring PostgreSQL Urcamp Alegrete 2009Database Refactoring PostgreSQL Urcamp Alegrete 2009
Database Refactoring PostgreSQL Urcamp Alegrete 2009
 
Database Refactoring com PostgreSQL PGDay RS 2009
Database Refactoring com PostgreSQL PGDay RS 2009Database Refactoring com PostgreSQL PGDay RS 2009
Database Refactoring com PostgreSQL PGDay RS 2009
 
Refatoração Banco de Dados (Agileweekend2009)
Refatoração Banco de Dados (Agileweekend2009)Refatoração Banco de Dados (Agileweekend2009)
Refatoração Banco de Dados (Agileweekend2009)
 

EXPLicando o Explain no PostgreSQL

  • 2. Estou com uma query lenta... e agora o que eu faço? ● Chamo alguém mais esperto que eu?
  • 3. Estou com uma query lenta... e agora o que eu faço? ● Chamo alguém mais esperto que eu? ● Amarro uma gilete na ponta de uma corda e começo com a auto-flagelação (m...- feelings) ??
  • 4. Estou com uma query lenta... e agora o que eu faço? ● Chamo alguém mais esperto que eu? ● Amarro uma gilete na ponta de uma corda e começo com a auto-flagelação (m...- feelings) ?? ● Paro, respiro fundo e penso?
  • 5. Então eu decidi pensar... :-) E quem optou por outro caminho... desculpe, vai ter que pensar mesmo assim...
  • 6. Coisas relevantes sobre uma query lenta ● Vc usa * no SELECT, e na App poucas colunas são usadas ?? ● Junto tabelas gigantes com tabelas grotescas sem seleção ?? ● Tem algum índice associado (aliás eu sei o que é um índice) ?? ● Uso funções e/ou expressões no WHERE ?? (saiba que existe um lugar especialmente reservado para você “In the Hell”)
  • 7. Ainda não sei o que fazer... Então vamos EXPLicar melhor... ;-)
  • 8. No PostgreSQL existe um tal de EXPLAIN, que EXPLica como um SQL é planejado para ser posteriormente ser executado, ou seja, ele mostra o “Query Plan”
  • 9. A estrutura de um “Query Plan” é nada mais que uma árvore composta de “Plan Nodes”
  • 10. Plan Nodes ● Scans – Table Scans (Sequential, Index, Bitmap, tid) – Other Scans (Function, Values, Result) ● Joins – Nested Loop, Merge, Hash ● Set Operations, Partitioned Tables (Inheritance) – Append – SetOp Except, Intersect ● Miscellaneous – Sort, Aggregate, Unique, Limit – Materialize – SubPlan, Initplan
  • 15. Nomenclatura Startup Cost Total Cost Estimated Rows Estimated Average Row Size (Bytes)
  • 16.
  • 18. Calculando custo de leitura sequencial em algumas tabelas
  • 21. Exercício ● Escolher uma query qualquer do e-cidade ● Executar o EXPLAIN e EXPLAIN ANALYZE e identificar os elementos apresentados