Upload
fabrizio-mello
View
551
Download
0
Embed Size (px)
DESCRIPTION
Apresentação com dicas a respeito do EXPLAIN no PostgreSQL
Citation preview
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
EstimatedAverage 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???