Ytelse og spørringsoptimalisering i PostgreSQL · leksjon

Lesing av EXPLAIN- og EXPLAIN ANALYZE-utdata

Tolk PostgreSQL-spørringsplaner med EXPLAIN for å se hvordan planleggeren utfører en spørring, og hvor tiden faktisk brukes.

Leksjon 4 av 413 trinn

Lesing av EXPLAIN- og EXPLAIN ANALYZE-utdata er en gratis leksjon i Ytelse og spørringsoptimalisering i PostgreSQL på CoddyKit. Dette er leksjon 4 av 4. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Ytelse og spørringsoptimalisering i PostgreSQL, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Ytelse og spørringsoptimalisering i PostgreSQL inneholder totalt 4 leksjoner.

Hvorfor lese spørringsplaner

Se hva PostgreSQL faktisk gjør før De optimaliserer en treg spørring. EXPLAIN viser planleggerens valgte kjøringsplan som et tre av noder.

EXPLAIN kontra EXPLAIN ANALYZE

EXPLAIN viser bare estimater, mens EXPLAIN ANALYZE faktisk kjører spørringen og rapporterer reelle tidsmålinger og radantall – noe som er langt mer nyttig ved feilsøking.

EXPLAIN ANALYZE
SELECT * FROM orders WHERE customer_id = 42;

Plantreet

Les plantrær innenfra og nedenfra og opp: løvnoder skanner data, mens foreldrenoder kobler sammen eller aggregerer data. Hver node rapporterer kostnad, antall rader og bredde.

Kostnadstallene

cost vises som cost=0.00..18.45: det første tallet er oppstartskostnaden, og det andre er totalkostnaden. Begge angis i vilkårlige planleggerenheter som brukes til å sammenligne alternative planer.

Sekvensiell skanning

En Seq Scan leser hele tabellen – dette fungerer fint for små tabeller eller når de fleste radene samsvarer, men er et faresignal for en selektiv spørring mot en stor tabell.

Indeksskanning

En Index Scan bruker en indeks til å finne samsvarende rader og henter dem deretter fra tabellen. Dette er effektivt for selektive predikater.

Estimerte kontra faktiske rader

Sammenlign estimerte rader med faktiske rader. Et stort avvik betyr at statistikken er utdatert, og ofte at planen er dårlig – kjør ANALYZE for å oppdatere den, slik det vises nedenfor.

ANALYZE orders;

Finn flaskehalsen

Finn flaskehalsen ved å lete etter noden med lengst faktisk kjøretid, eller en node der løkkene multipliserer kostnaden. Det er her De bør fokusere optimaliseringen.

BUFFERS for innsikt i I/O

Legg til BUFFERS i EXPLAIN for å se hvor mange sider som kom fra hurtigbufferen, og hvor mange som kom fra disken – en rask måte å finne I/O-begrensede spørringer på. Se eksempelet nedenfor.

EXPLAIN (ANALYZE, BUFFERS)
SELECT * FROM orders WHERE total > 100;

Strategier for sammenkobling

Følg med på sammenkoblingsstrategien: Nested Loop, Hash Join eller Merge Join. En Nested Loop over mange rader uten en indeks er et klassisk eksempel på et tregt mønster.

Lesbare formater

For store planer kan De bytte til FORMAT JSON eller et visuelt verktøy for å utforske dem enklere. Spørringen nedenfor viser JSON-alternativet.

EXPLAIN (ANALYZE, FORMAT JSON)
SELECT * FROM orders;

Rask kontroll

Test det De har lært.

Oppsummering

Oppsummering: Les EXPLAIN-trær, sammenlign estimater med faktiske verdier fra ANALYZE, skill mellom Seq- og Index-skanninger og ulike sammenkoblingstyper, bruk BUFFERS, og finn flaskehalsnoden.

Gratis å komme i gang

Lær deg SQL med en AI-veileder – gratis

Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.

Kurs
22
Leksjoner
88

Ofte stilte spørsmål

Er leksjonen «Lesing av EXPLAIN- og EXPLAIN ANALYZE-utdata» gratis?

Ja – hele teksten i «Lesing av EXPLAIN- og EXPLAIN ANALYZE-utdata» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av Ytelse og spørringsoptimalisering i PostgreSQL-kurset, kan du oppgradere til CoddyKit PRO. Kurset i Ytelse og spørringsoptimalisering i PostgreSQL inneholder totalt 4 leksjoner.

Hva lærer jeg i «Lesing av EXPLAIN- og EXPLAIN ANALYZE-utdata»?

Tolk PostgreSQL-spørringsplaner med EXPLAIN for å se hvordan planleggeren utfører en spørring, og hvor tiden faktisk brukes. Du øver på Ytelse og spørringsoptimalisering i PostgreSQL med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.

Trenger jeg erfaring for å begynne med Ytelse og spørringsoptimalisering i PostgreSQL?

Ingen tidligere erfaring er nødvendig. Ytelse og spørringsoptimalisering i PostgreSQL på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 4 av 4.

Hvor lang tid tar leksjonen «Lesing av EXPLAIN- og EXPLAIN ANALYZE-utdata»?

De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.

Kan jeg skrive og kjøre kode i denne Ytelse og spørringsoptimalisering i PostgreSQL-leksjonen?

Ja. Alle Ytelse og spørringsoptimalisering i PostgreSQL-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.

Alle leksjonene i dette kurset

  1. Forstå grunnleggende databaseytelse
  2. Oversikt over PostgreSQL-arkitekturen
  3. Grunnleggende arbeidsflyt for spørringskjøring
  4. Lesing av EXPLAIN- og EXPLAIN ANALYZE-utdata
← Tilbake til Ytelse og spørringsoptimalisering i PostgreSQL