Prestaties en queryoptimalisatie in PostgreSQL · Les

Inleiding tot EXPLAIN en ANALYZE

Ga aan de slag met de opdrachten `EXPLAIN` en `EXPLAIN ANALYZE` om query-uitvoeringsplannen te bekijken.

Les 1 van 412 stappen

Inleiding tot EXPLAIN en ANALYZE is een gratis Prestaties en queryoptimalisatie in PostgreSQL-les op CoddyKit. Dit is les 1 van 4. Je kunt 3 lessen uit dit leerpad gratis volledig lezen — daarna ontgrendelt CoddyKit PRO alle lessen, plus praktische oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Prestaties en queryoptimalisatie in PostgreSQL. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Prestaties en queryoptimalisatie in PostgreSQL bevat in totaal 4 lessen.

Queryprestaties ontsluiten

Welkom in de wereld van PostgreSQL-queryoptimalisatie! Om je database snel te laten werken, moet je begrijpen hoe deze je verzoeken verwerkt.

In deze les maak je kennis met EXPLAIN, een krachtige opdracht waarmee je achter de schermen kunt kijken en precies kunt zien hoe PostgreSQL je SQL-query's van plan is uit te voeren.

De slimme planner van PostgreSQL

Voordat een database je SQL-query uitvoert, doorloopt deze eerst een cruciale stap: queryplanning. PostgreSQL heeft hiervoor een ingebouwd onderdeel dat de queryoptimizer heet.

Zie de optimizer als een superslimme chef-kok. Wanneer je deze een recept geeft (je SQL-query), bepaalt deze de efficiëntste manier om het gerecht te bereiden (je gegevens op te halen). Daarbij kiest de optimizer de beste stappen, zoals welke indexen moeten worden gebruikt en hoe tabellen moeten worden gekoppeld.

Het recept van je query

Wat is een queryplan precies? Het is een gedetailleerde, stapsgewijze uitsplitsing van hoe PostgreSQL je SQL-instructie wil uitvoeren. Zie het als een receptkaart met alle ingrediënten en handelingen.

  • Welke tabellen worden gelezen?
  • In welke volgorde?
  • Worden er indexen gebruikt?
  • Hoe worden gegevens gesorteerd of geaggregeerd?

Het queryplan beantwoordt deze vragen en toont de bewerkingen en hun geschatte kosten.

Je eerste EXPLAIN

Laten we de opdracht EXPLAIN gebruiken om het geschatte plan voor een eenvoudige SELECT-query te bekijken. We gaan ervan uit dat er een basistabel users bestaat.

Belangrijk: EXPLAIN toont alleen het plan; de query wordt NIET daadwerkelijk uitgevoerd en er worden geen gegevens opgehaald. Je kunt deze opdracht veilig op productiesystemen gebruiken.

EXPLAIN SELECT * FROM users WHERE id = 1;

De uitvoer van een basisplan ontcijferen

De uitvoer van EXPLAIN wordt vaak weergegeven als een boomstructuur van bewerkingen. Dit zijn enkele veelvoorkomende termen die je kunt tegenkomen:

  • Seq Scan: PostgreSQL leest elke rij in de tabel van begin tot eind.
  • Index Scan: PostgreSQL gebruikt een index om snel specifieke rijen te vinden.
  • rows: de schatting van de optimizer van het aantal rijen dat een bewerking verwerkt.
  • cost: een geschatte maat voor de hoeveelheid werk, die de totale kosten van de bewerking weergeeft. Lagere kosten zijn doorgaans beter.

Dit zijn allemaal schattingen op basis van databasestatistieken.

Verder dan schattingen: werkelijke statistieken

Hoewel EXPLAIN je een goed overzicht en schattingen geeft, kunnen deze schattingen soms onnauwkeurig zijn als databasestatistieken verouderd zijn of als er complexe voorwaarden worden gebruikt.

Daar komt EXPLAIN ANALYZE van pas! Door ANALYZE aan je opdracht met EXPLAIN toe te voegen, wordt de query daadwerkelijk uitgevoerd en worden statistieken uit de praktijk verzameld. Zo krijg je een veel nauwkeuriger beeld van de prestaties.

EXPLAIN ANALYZE in actie

Laten we dezelfde query uitvoeren, maar deze keer met EXPLAIN ANALYZE. Let op: omdat deze opdracht de query uitvoert, duurt dit net zo lang als de query normaal zou duren en treden eventuele neveneffecten, zoals wijzigingen in gegevens, daadwerkelijk op.

EXPLAIN ANALYZE SELECT * FROM users WHERE id = 1;

De uitvoer van ANALYZE interpreteren

De uitvoer van EXPLAIN ANALYZE bevat alle informatie van een gewone EXPLAIN, plus werkelijke uitvoeringsstatistieken:

  • actual time: De werkelijke tijd die elke stap kost (opstarttijd en totale tijd).
  • rows: Het werkelijke aantal rijen dat door elke stap is verwerkt.
  • loops: Hoe vaak een bewerking is uitgevoerd.

Door deze werkelijke waarden te vergelijken met de geschatte waarden van een eenvoudige EXPLAIN, kunt u ontdekken waar de optimizer mogelijk slechte keuzes heeft gemaakt.

EXPLAIN versus EXPLAIN ANALYZE

Hier volgt een korte samenvatting van de belangrijkste verschillen:

  • EXPLAIN:
    - Toont het *geschatte* plan en de kosten.
    - Voert de query *niet* uit.
    - Veilig voor productieomgevingen.
  • EXPLAIN ANALYZE:
    - Toont *werkelijke* uitvoeringsstatistieken (tijd, rijen).
    - *Voert* de query uit, waarbij gegevens mogelijk worden gewijzigd.
    - Kan veel resources gebruiken; wees voorzichtig in productie.

Wanneer gebruikt u welke opdracht?

Weten wanneer u elke opdracht gebruikt, is essentieel voor effectieve prestatieafstemming:

  • Gebruik EXPLAIN voor:
    - Snelle controles van het plan zonder de query uit te voeren.
    - Het testen van hypothetische herschrijvingen van queries zonder neveneffecten.
    - Het veilig onderzoeken van plannen voor complexe of langlopende queries.
  • Gebruik EXPLAIN ANALYZE voor:
    - Gedetailleerde prestatieanalyse en het identificeren van knelpunten.
    - Het controleren van schattingen van de optimizer aan de hand van echte uitvoering.
    - Gebruik dit doorgaans eerst in ontwikkel- of acceptatieomgevingen.

Controleer uw begrip

U hebt de basisprincipes van EXPLAIN en EXPLAIN ANALYZE geleerd. Laten we kijken of u het belangrijkste gebruik van beide kunt onderscheiden.

Samenvatting: queryplannen ontcijferen

Gefeliciteerd! U hebt uw eerste stap gezet in het begrijpen van queryplannen van PostgreSQL. U weet nu:

  • EXPLAIN toont het *geschatte* plan van de database.
  • EXPLAIN ANALYZE *voert* de query uit en geeft *werkelijke* prestatiemetrieken.

Deze opdrachten zijn onmisbare hulpmiddelen voor iedereen die PostgreSQL-queries wil optimaliseren. In de volgende lessen gaan we dieper in op het interpreteren van de verschillende knooppunten die u in deze plannen ziet.

Gratis beginnen

Leer SQL met een AI-tutor — gratis

Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.

Cursussen
22
Lessen
88

Veelgestelde vragen

Is de les “Inleiding tot EXPLAIN en ANALYZE” gratis?

Ja — je kunt hier op het web alle 3 lessen van het leerpad Prestaties en queryoptimalisatie in PostgreSQL, waaronder “Inleiding tot EXPLAIN en ANALYZE”, gratis volledig lezen. Daarna ontgrendelt CoddyKit PRO alle lessen, plus interactieve oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. De cursus Prestaties en queryoptimalisatie in PostgreSQL bevat in totaal 4 lessen.

Wat leer ik in “Inleiding tot EXPLAIN en ANALYZE”?

Ga aan de slag met de opdrachten `EXPLAIN` en `EXPLAIN ANALYZE` om query-uitvoeringsplannen te bekijken. Je oefent met Prestaties en queryoptimalisatie in PostgreSQL door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.

Heb ik ervaring nodig om met Prestaties en queryoptimalisatie in PostgreSQL te beginnen?

Ervaring vooraf is niet nodig. Prestaties en queryoptimalisatie in PostgreSQL op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 1 van 4.

Hoe lang duurt de les “Inleiding tot EXPLAIN en ANALYZE”?

De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.

Kan ik code schrijven en uitvoeren in deze les over Prestaties en queryoptimalisatie in PostgreSQL?

Ja. Elke les over Prestaties en queryoptimalisatie in PostgreSQL bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.

Alle lessen in deze cursus

  1. Inleiding tot EXPLAIN en ANALYZE
  2. Planknooppunten interpreteren
  3. Prestatieknelpunten identificeren
  4. EXPLAIN-kostenramingen en aantallen rijen lezen
← Terug naar Prestaties en queryoptimalisatie in PostgreSQL