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.
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?
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
- pg_stat_statements: viktigaste frågorna
- pgBadger för logganalys
- Anslutningspoolning: PgBouncer
- Kapacitetsplanering och bloatgranskningar