Ydelsesoptimering og optimering af forespørgsler i PostgreSQL · Lektion

Læsning af output fra EXPLAIN og EXPLAIN ANALYZE

Afkod PostgreSQL-queryplaner med EXPLAIN for at se, hvordan planner'en udfører en query, og hvor tiden reelt bruges.

Lektion 4 af 413 trin

Læsning af output fra EXPLAIN og EXPLAIN ANALYZE er en gratis Ydelsesoptimering og optimering af forespørgsler i PostgreSQL-lektion på CoddyKit. Dette er lektion 4 af 4. Du kan læse hele lektionen gratis nedenfor — og derefter øve dig praktisk i browseren med en indbygget kodeeditor og en AI-vejleder, der er tilgængelig døgnet rundt. Den er en del af læringsforløbet i Ydelsesoptimering og optimering af forespørgsler i PostgreSQL, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Ydelsesoptimering og optimering af forespørgsler i PostgreSQL-kurset indeholder 4 lektioner i alt.

Hvorfor skal du læse forespørgselsplaner

Se, hvad PostgreSQL faktisk gør, før du finjusterer en langsom forespørgsel. EXPLAIN viser planlæggerens valgte udførelsesplan som et træ af noder.

EXPLAIN kontra EXPLAIN ANALYZE

EXPLAIN viser kun estimater; EXPLAIN ANALYZE kører faktisk forespørgslen og rapporterer de faktiske tider og antal rækker — langt mere nyttigt til fejlfinding.

EXPLAIN ANALYZE
SELECT * FROM orders WHERE customer_id = 42;

Plantreet

Læs plantreer indefra og nedefra: bladnoder scanner data, mens forældrenoder sammenføjer eller aggregerer. Hver node rapporterer sin omkostning, antal rækker og bredde.

Omkostningstallene

Omkostningen vises som cost=0.00..18.45: det første tal er opstartsomkostningen, det andet er den samlede omkostning, og begge er vilkårlige enheder fra planlæggeren, som bruges til at sammenligne konkurrerende planer.

Sekventiel scanning

En Seq Scan læser hele tabellen — fint for små tabeller, eller når de fleste rækker matcher, men et advarselstegn ved en selektiv forespørgsel på en stor tabel.

Indeksscanning

En Index Scan bruger et indeks til at finde matchende rækker og henter dem derefter fra tabellen. Det er den effektive løsning til selektive prædikater.

Estimerede kontra faktiske rækker

Sammenlign estimerede rækker med det faktiske antal rækker. En stor forskel betyder forældede statistikker og ofte en dårlig plan — kør ANALYZE for at opdatere dem som vist nedenfor.

ANALYZE orders;

Find flaskehalsen

Find flaskehalsen ved at lede efter noden med den længste faktiske tid eller en node, hvor løkkerne mangedobler omkostningen. Det er dér, du skal fokusere optimeringen.

BUFFERS giver indsigt i I/O

Føj BUFFERS til din EXPLAIN for at se, hvor mange sider der kom fra cachen i forhold til disken — den hurtige måde at finde forespørgsler, der er begrænset af I/O. Se eksemplet nedenfor.

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

Sammenføjningsstrategier

Hold øje med sammenføjningsstrategien: Nested Loop, Hash Join eller Merge Join. En Nested Loop over mange rækker uden et indeks er et klassisk langsomt mønster.

Læsbare formater

Skift til FORMAT JSON eller et visuelt værktøj for at udforske store planer nemmere. Forespørgslen nedenfor viser JSON-indstillingen.

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

Hurtigt tjek

Test det, du har lært.

Opsummering

Opsummering: Læs EXPLAIN-træer, sammenlign estimater med de faktiske resultater fra ANALYZE, skeln mellem Seq- og Index-scanninger samt sammenføjningstyper, brug BUFFERS, og find flaskehalsnoden.

Gratis at komme i gang

Lær SQL med en AI-underviser — gratis

Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.

Kurser
22
Lektioner
88

Ofte stillede spørgsmål

Er lektionen “Læsning af output fra EXPLAIN og EXPLAIN ANALYZE” gratis?

Ja — hele teksten til “Læsning af output fra EXPLAIN og EXPLAIN ANALYZE” kan læses gratis her på nettet. Hvis du vil øve dig interaktivt med en indbygget kodeeditor og en AI-vejleder døgnet rundt og få adgang til resten af Ydelsesoptimering og optimering af forespørgsler i PostgreSQL-kurset, skal du opgradere til CoddyKit PRO. Ydelsesoptimering og optimering af forespørgsler i PostgreSQL-kurset indeholder 4 lektioner i alt.

Hvad lærer jeg i “Læsning af output fra EXPLAIN og EXPLAIN ANALYZE”?

Afkod PostgreSQL-queryplaner med EXPLAIN for at se, hvordan planner'en udfører en query, og hvor tiden reelt bruges. Du øver dig i Ydelsesoptimering og optimering af forespørgsler i PostgreSQL med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.

Skal jeg have erfaring for at begynde på Ydelsesoptimering og optimering af forespørgsler i PostgreSQL?

Der kræves ingen tidligere erfaring. Ydelsesoptimering og optimering af forespørgsler i PostgreSQL på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 4 af 4.

Hvor lang tid tager lektionen “Læsning af output fra EXPLAIN og EXPLAIN ANALYZE”?

De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.

Kan jeg skrive og køre kode i denne Ydelsesoptimering og optimering af forespørgsler i PostgreSQL-lektion?

Ja. Alle Ydelsesoptimering og optimering af forespørgsler i PostgreSQL-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.

Alle lektioner i dette kursus

  1. Grundlæggende forståelse af databaseydeevne
  2. Oversigt over PostgreSQL-arkitekturen
  3. Grundlæggende arbejdsgang for query-eksekvering
  4. Læsning af output fra EXPLAIN og EXPLAIN ANALYZE
← Tilbage til Ydelsesoptimering og optimering af forespørgsler i PostgreSQL