SQL Academy · Lektion

pg_stat_statements: viktigaste frågorna

Aktivera pg_stat_statements, hitta de mest resurskrävande frågorna efter total tid och rikta optimeringen mot dem.

Lektion 1 av 414 steg

pg_stat_statements: viktigaste frågorna är en gratis lektion i SQL Academy på CoddyKit. Detta är lektion 1 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för SQL Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i SQL Academy innehåller totalt 4 lektioner.

Vad pg_stat_statements ger Er

En ackumulerande post över varje fråga, normaliserad efter form — det mest användbara DBA-verktyget i PostgreSQL.

Aktivera det

Det är ett contrib-tillägg. Lägg till det i shared_preload_libraries och starta om:

-- postgresql.conf
shared_preload_libraries = 'pg_stat_statements'

-- After restart:
CREATE EXTENSION pg_stat_statements;

Frågor med längst total tid

Frågan "vart tar min CPU vägen":

SELECT calls,
       total_exec_time,
       mean_exec_time,
       rows,
       query
FROM pg_stat_statements
ORDER BY total_exec_time DESC
LIMIT 10;

Långsamma frågor per anrop

Frågor som är långsamma vid varje anrop:

SELECT mean_exec_time, calls, query
FROM pg_stat_statements
WHERE mean_exec_time > 100
ORDER BY mean_exec_time DESC
LIMIT 20;

Frekventa billiga frågor

En miljon frågor på 1 ms är fortfarande ett problem:

SELECT calls, mean_exec_time, total_exec_time, query
FROM pg_stat_statements
ORDER BY calls DESC
LIMIT 20;

Normalisering

pg_stat_statements grupperar frågor efter normaliserad form — litteraler ersätts med $N. Därför blir "SELECT * FROM users WHERE id = 1" och "= 2" samma rad.

Återställ statistik

Börja om efter en driftsättning för att mäta det nya beteendet:

SELECT pg_stat_statements_reset();

I/O- jämfört med CPU-tid

Nyare PG-versioner delar upp exekveringstiden. shared_blks_hit / shared_blks_read ger en indikation på cache kontra disk:

SELECT query, shared_blks_hit, shared_blks_read,
       shared_blks_read::FLOAT / NULLIF(shared_blks_hit + shared_blks_read, 0) AS read_ratio
FROM pg_stat_statements
ORDER BY shared_blks_read DESC LIMIT 20;

JIT och planeringstid

PG 13+ visar total_plan_time. Vissa frågor ägnar mer tid åt PLANERING än åt körning — vanligtvis ett tecken på att förberedda instruktioner bör användas.

Statistik per databas och per användare

pg_stat_statements gäller för hela klustret. Filtrera på kolumnerna dbid och userid för vyer per databas och per användare.

Kombinera med EXPLAIN ANALYZE

pg_stat_statements visar VILKA frågor som är långsamma. EXPLAIN ANALYZE visar VARFÖR.

Förbehåll

  • Ackumulerad statistik per databas och per användare kan dölja problem — titta på totalen
  • Spårar inte tid per rad, utan bara total tid per anrop
  • Återställs vid omstart eller genom ett återställningsanrop

Sammanfattning

pg_stat_statements är obligatoriskt i produktion.

  • Topp efter total tid → störst förbättringar
  • Topp efter medelvärde → konsekvent långsamhet
  • Topp efter antal anrop → frekvensproblem
  • Kombinera med EXPLAIN för att åtgärda problemen

Snabb kontroll

Ni har aktiverat pg_stat_statements. Vilken fråga ger störst prestandavinster att undersöka?

Gratis att börja

Lär dig SQL med en AI-lärare – gratis

Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.

Kurser
46
Lektioner
183

Vanliga frågor

Är lektionen ”pg_stat_statements: viktigaste frågorna” gratis?

Ja – hela texten till ”pg_stat_statements: viktigaste frågorna” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i SQL Academy, kan Ni uppgradera till CoddyKit PRO. Kursen i SQL Academy innehåller totalt 4 lektioner.

Vad lär jag mig i ”pg_stat_statements: viktigaste frågorna”?

Aktivera pg_stat_statements, hitta de mest resurskrävande frågorna efter total tid och rikta optimeringen mot dem. Ni övar på SQL Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.

Behöver jag någon erfarenhet för att börja lära mig SQL Academy?

Du behöver inga förkunskaper. Utbildningen i SQL Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 1 av 4.

Hur lång tid tar lektionen ”pg_stat_statements: viktigaste frågorna”?

De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.

Kan jag skriva och köra kod i den här SQL Academy-lektionen?

Ja. Varje SQL Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.

Alla lektioner i den här kursen

  1. pg_stat_statements: viktigaste frågorna
  2. pgBadger för logganalys
  3. Anslutningspoolning: PgBouncer
  4. Kapacitetsplanering och bloatgranskningar
← Tillbaka till SQL Academy