explicando o explain no postgresql

23
EXPLicando o EXPLAIN

Upload: fabrizio-mello

Post on 14-Jun-2015

551 views

Category:

Technology


0 download

DESCRIPTION

Apresentação com dicas a respeito do EXPLAIN no PostgreSQL

TRANSCRIPT

Page 1: EXPLicando o Explain no PostgreSQL

EXPLicando

o

EXPLAIN

Page 2: EXPLicando o Explain no PostgreSQL

Estou com uma query lenta... e agora o que eu faço?

● Chamo alguém mais esperto que eu?

Page 3: EXPLicando o Explain no PostgreSQL

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

Page 4: EXPLicando o Explain no PostgreSQL

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?

Page 5: EXPLicando o Explain no PostgreSQL

Então eu decidi pensar... :-)

E quem optou por outro caminho... desculpe, vai ter que pensar mesmo assim...

Page 6: EXPLicando o Explain no PostgreSQL

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”)

Page 7: EXPLicando o Explain no PostgreSQL

Ainda não sei o que fazer...

Então vamos EXPLicar melhor...

;-)

Page 8: EXPLicando o Explain no PostgreSQL

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”

Page 9: EXPLicando o Explain no PostgreSQL

A estrutura de um “Query Plan” é nada mais que uma árvore composta de “Plan Nodes”

Page 10: EXPLicando o Explain no PostgreSQL

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

Page 11: EXPLicando o Explain no PostgreSQL

Nomenclatura

Page 12: EXPLicando o Explain no PostgreSQL

Nomenclatura

Join Node

Page 13: EXPLicando o Explain no PostgreSQL

Nomenclatura

Scan NodesJoin Node

Page 14: EXPLicando o Explain no PostgreSQL

Nomenclatura

Page 15: EXPLicando o Explain no PostgreSQL

Nomenclatura

Startup Cost

Total Cost

Estimated Rows

EstimatedAverage Row Size (Bytes)

Page 16: EXPLicando o Explain no PostgreSQL
Page 17: EXPLicando o Explain no PostgreSQL

Custo Total

Page 18: EXPLicando o Explain no PostgreSQL

Calculando custo de leitura sequencial em algumas tabelas

Page 19: EXPLicando o Explain no PostgreSQL

Como usar

EXPLAIN <query>

Page 20: EXPLicando o Explain no PostgreSQL

Como usar

EXPLAIN ANALYZE <query>

Page 21: EXPLicando o Explain no PostgreSQL

Exercício

● Escolher uma query qualquer do e-cidade● Executar o EXPLAIN e EXPLAIN ANALYZE e

identificar os elementos apresentados

Page 22: EXPLicando o Explain no PostgreSQL

Dúvidas???

Page 23: EXPLicando o Explain no PostgreSQL