Küsimus
Anonüümne
(23.03.2023 10:31)
Millest alustada, kui sooviks õppida (PostgreSQLis) päringute optimeerimist?
Vastus (19.08.2023 18:39):
Minu arvates võiks alustada sellest, et õppida kirjutama mitte-ebaefektiivseid päringuid (lihtsustamata tingimused, üleliigsete tabelite lugemine, samade andmete mitmekordne lugemine jne). Selleks, et detektiivina lausete aeglase täitmise põhjuste jälgi ajada, tuleb aru saada täitmisplaanis kasutatavatest operatsioonidest.
Päringute optimeerimisest üldiselt kirjutatakse SIIN.
Ebaefektiivsetest päringutest kirjutatakse SIIN (materjal "Andmebaasid I" kodulehel - kasutajanimi SIS2 ja parool SIS2).
PostgreSQL füüsilistes täitmisplaanides kajastuvad operatsioonid (lihtsad ja lühikesed seletused):
- https://www.vertabelo.com/blog/technical-articles/understanding-execution-plans-in-postgresql
- Erinevat tüüpi operatsioonid täitmisplaanides:
- https://pganalyze.com/docs/explain/scan-nodes
- https://pganalyze.com/docs/explain/join-nodes
- https://pganalyze.com/docs/explain/other-nodes
- https://use-the-index-luke.com/sql/explain-plan/postgresql/operations
- https://www.cybertec-postgresql.com/en/join-strategies-and-performance-in-postgresql/
Veel märkmeid: https://gist.github.com/hgmnz/883144
Võimalikud vahendid tekstiliselt esitatud täitmisplaanide paremaks struktureerimiseks ja visualiseerimiseks:
- See vahend soovib sisendiks saada päringu täitmisplaani JSON formaadis. Seda saab andmebaasisüsteemilt küsida nii: EXPLAIN (FORMAT JSON) SELECT ...;