EXPLicando o Explain no PostgreSQL

Preview:

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???

Recommended