EXPLicando o Explain no PostgreSQL
-
Upload
fabrizio-mello -
Category
Technology
-
view
553 -
download
0
description
Transcript of EXPLicando o Explain no PostgreSQL
![Page 1: EXPLicando o Explain no PostgreSQL](https://reader036.fdocumentos.com/reader036/viewer/2022082218/557d8241d8b42a75548b5255/html5/thumbnails/1.jpg)
EXPLicando
o
EXPLAIN
![Page 2: EXPLicando o Explain no PostgreSQL](https://reader036.fdocumentos.com/reader036/viewer/2022082218/557d8241d8b42a75548b5255/html5/thumbnails/2.jpg)
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](https://reader036.fdocumentos.com/reader036/viewer/2022082218/557d8241d8b42a75548b5255/html5/thumbnails/3.jpg)
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](https://reader036.fdocumentos.com/reader036/viewer/2022082218/557d8241d8b42a75548b5255/html5/thumbnails/4.jpg)
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](https://reader036.fdocumentos.com/reader036/viewer/2022082218/557d8241d8b42a75548b5255/html5/thumbnails/5.jpg)
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](https://reader036.fdocumentos.com/reader036/viewer/2022082218/557d8241d8b42a75548b5255/html5/thumbnails/6.jpg)
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](https://reader036.fdocumentos.com/reader036/viewer/2022082218/557d8241d8b42a75548b5255/html5/thumbnails/7.jpg)
Ainda não sei o que fazer...
Então vamos EXPLicar melhor...
;-)
![Page 8: EXPLicando o Explain no PostgreSQL](https://reader036.fdocumentos.com/reader036/viewer/2022082218/557d8241d8b42a75548b5255/html5/thumbnails/8.jpg)
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](https://reader036.fdocumentos.com/reader036/viewer/2022082218/557d8241d8b42a75548b5255/html5/thumbnails/9.jpg)
A estrutura de um “Query Plan” é nada mais que uma árvore composta de “Plan Nodes”
![Page 10: EXPLicando o Explain no PostgreSQL](https://reader036.fdocumentos.com/reader036/viewer/2022082218/557d8241d8b42a75548b5255/html5/thumbnails/10.jpg)
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](https://reader036.fdocumentos.com/reader036/viewer/2022082218/557d8241d8b42a75548b5255/html5/thumbnails/11.jpg)
Nomenclatura
![Page 12: EXPLicando o Explain no PostgreSQL](https://reader036.fdocumentos.com/reader036/viewer/2022082218/557d8241d8b42a75548b5255/html5/thumbnails/12.jpg)
Nomenclatura
Join Node
![Page 13: EXPLicando o Explain no PostgreSQL](https://reader036.fdocumentos.com/reader036/viewer/2022082218/557d8241d8b42a75548b5255/html5/thumbnails/13.jpg)
Nomenclatura
Scan NodesJoin Node
![Page 14: EXPLicando o Explain no PostgreSQL](https://reader036.fdocumentos.com/reader036/viewer/2022082218/557d8241d8b42a75548b5255/html5/thumbnails/14.jpg)
Nomenclatura
![Page 15: EXPLicando o Explain no PostgreSQL](https://reader036.fdocumentos.com/reader036/viewer/2022082218/557d8241d8b42a75548b5255/html5/thumbnails/15.jpg)
Nomenclatura
Startup Cost
Total Cost
Estimated Rows
EstimatedAverage Row Size (Bytes)
![Page 16: EXPLicando o Explain no PostgreSQL](https://reader036.fdocumentos.com/reader036/viewer/2022082218/557d8241d8b42a75548b5255/html5/thumbnails/16.jpg)
![Page 17: EXPLicando o Explain no PostgreSQL](https://reader036.fdocumentos.com/reader036/viewer/2022082218/557d8241d8b42a75548b5255/html5/thumbnails/17.jpg)
Custo Total
![Page 18: EXPLicando o Explain no PostgreSQL](https://reader036.fdocumentos.com/reader036/viewer/2022082218/557d8241d8b42a75548b5255/html5/thumbnails/18.jpg)
Calculando custo de leitura sequencial em algumas tabelas
![Page 19: EXPLicando o Explain no PostgreSQL](https://reader036.fdocumentos.com/reader036/viewer/2022082218/557d8241d8b42a75548b5255/html5/thumbnails/19.jpg)
Como usar
EXPLAIN <query>
![Page 20: EXPLicando o Explain no PostgreSQL](https://reader036.fdocumentos.com/reader036/viewer/2022082218/557d8241d8b42a75548b5255/html5/thumbnails/20.jpg)
Como usar
EXPLAIN ANALYZE <query>
![Page 21: EXPLicando o Explain no PostgreSQL](https://reader036.fdocumentos.com/reader036/viewer/2022082218/557d8241d8b42a75548b5255/html5/thumbnails/21.jpg)
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](https://reader036.fdocumentos.com/reader036/viewer/2022082218/557d8241d8b42a75548b5255/html5/thumbnails/22.jpg)
Dúvidas???
![Page 23: EXPLicando o Explain no PostgreSQL](https://reader036.fdocumentos.com/reader036/viewer/2022082218/557d8241d8b42a75548b5255/html5/thumbnails/23.jpg)