Använda pg_stat_statements och pg_buffercache
Utnyttja kraftfulla tillägg som `pg_stat_statements` och `pg_buffercache` för djupgående insikter i prestandan.
Använda pg_stat_statements och pg_buffercache är en gratis lektion i Prestandaoptimering och frågeoptimering i PostgreSQL på CoddyKit. Detta är lektion 1 av 4. Du kan läsa vilka 3 lektioner som helst i den här lärvägen kostnadsfritt i sin helhet – därefter låser CoddyKit PRO upp alla lektioner, plus praktisk övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Den ingår i lärvägen för Prestandaoptimering och frågeoptimering i PostgreSQL, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Prestandaoptimering och frågeoptimering i PostgreSQL innehåller totalt 4 lektioner.
PostgreSQL-tillägg: Extra kraft
PostgreSQL är otroligt kraftfullt, och funktionaliteten kan utökas ytterligare med hjälp av tillägg.
Tillägg är moduler som lägger till nya funktioner, datatyper, operatorer och annat i databasen. De fungerar ungefär som insticksmoduler som utökar databasens funktioner utan att kärnkoden behöver ändras.
I den här lektionen utforskar vi två viktiga tillägg för prestandaövervakning: pg_stat_statements och pg_buffercache.
Möt pg_stat_statements: Frågeprofilerare
pg_stat_statements är ett ovärderligt verktyg för att förstå databasens arbetsbelastning. Det spårar körningsstatistik för alla SQL-satser som körs av servern.
Det här tillägget hjälper er att identifiera:
- Vilka frågor som körs oftast.
- Vilka frågor som förbrukar mest total tid.
- Frågor med lång genomsnittlig körningstid.
- Frågor som läser eller skriver många diskblock.
Det är ert förstahandsverktyg för att hitta prestandaflaskhalsar på frågenivå.
Aktivera pg_stat_statements
Om ni vill använda pg_stat_statements måste ni först aktivera det i PostgreSQL-konfigurationen.
1. Redigera filen postgresql.conf och lägg till pg_stat_statements i parametern shared_preload_libraries. Exempel: shared_preload_libraries = 'pg_stat_statements'.
2. Starta om PostgreSQL-servern så att ändringen börjar gälla.
3. Anslut slutligen till databasen och skapa tillägget:
CREATE EXTENSION pg_stat_statements;Tolka utdata från pg_stat_statements
När pg_stat_statements har aktiverats samlar det in data i en vy med namnet pg_stat_statements. Här är några viktiga kolumner som ni ofta kontrollerar:
query: Den normaliserade SQL-satsen.calls: Hur många gånger frågan kördes.total_time: Den totala tiden för att köra frågan (i millisekunder).mean_time: Genomsnittlig körningstid per anrop.rows: Totalt antal returnerade eller påverkade rader.shared_blks_hit/shared_blks_read: Cacheträffar jämfört med diskläsningar.
Genom att sortera efter total_time hittar ni de största övergripande resursförbrukarna.
Praktiskt exempel: De vanligaste frågorna
Så här hittar ni de fem frågor som har förbrukat mest total körningstid. Den här frågan hjälper er att prioritera optimeringsarbetet.
Kolumnen hit_percent ger en uppfattning om hur effektiv PostgreSQL:s buffertcache är för frågan.
SELECT
query,
calls,
total_time,
mean_time,
rows,
100.0 * shared_blks_hit / (shared_blks_hit + shared_blks_read + 1) AS hit_percent
FROM
pg_stat_statements
ORDER BY
total_time DESC
LIMIT 5;Möt pg_buffercache: Minnesinspektör
Medan pg_stat_statements visar frågeprestanda ger pg_buffercache insikt i PostgreSQL:s delade buffertcache. Det är det minnesområde där PostgreSQL lagrar ofta åtkomna datablock.
Genom att förstå vad som finns i buffertcachen kan ni avgöra:
- Vilka tabeller eller index som används mest aktivt.
- Om inställningen
shared_buffersär tillräcklig. - Om frågor drar nytta av cachad data eller läser från disk.
Aktivera pg_buffercache
Det är enklare att aktivera pg_buffercache än pg_stat_statements. Vanligtvis behöver ni varken ändra shared_preload_libraries eller starta om servern.
Ni behöver bara ansluta till databasen och skapa tillägget:
CREATE EXTENSION pg_buffercache;Ta en titt i den delade buffertcachen
När tillägget har skapats kan Ni fråga vyn pg_buffercache för att se vilka relationer (tabeller eller index) som använder flest buffertar. Varje buffert motsvarar vanligtvis ett datablock på 8 KB.
Den här frågan visar de fem främsta relationerna baserat på hur många buffertar de använder i cachen:
SELECT
c.relname AS relation_name,
count(*) AS buffers_in_cache
FROM
pg_buffercache b
JOIN
pg_class c ON b.relfilenode = c.relfilenode
JOIN
pg_database d ON b.reldatabase = d.oid AND d.datname = current_database()
GROUP BY
c.relname
ORDER BY
buffers_in_cache DESC
LIMIT 5;Tolka cacheeffektivitet
Om en tabell eller ett index konsekvent visas högst upp i resultatet från pg_buffercache med många buffertar innebär det att dessa data används ofta och hålls i minnet.
Det är i allmänhet ett gott tecken, eftersom åtkomst till minnet är mycket snabbare än disk-I/O. Ett högt värde för hit_percent i pg_stat_statements korrelerar ofta med att data finns i buffertcachen.
Ni kan använda denna information för att avgöra om det vore fördelaktigt att öka shared_buffers eller optimera frågor så att de läser mindre datamängder.
Snabbkontroll: övervakningsverktyg
Vilka av följande påståenden om pg_stat_statements och pg_buffercache är sanna?
Sammanfattning: djupdykning med tillägg
Bra jobbat! Ni har lärt Er att använda två kraftfulla PostgreSQL-tillägg för prestandaövervakning:
pg_stat_statements: Ert viktigaste verktyg för att profilera SQL-frågor, identifiera långsamma eller ofta körda satser och förstå deras resursförbrukning.pg_buffercache: Ger Er insyn i den delade buffertcachen, så att Ni kan förstå vilka data som aktivt finns i minnet och hur effektiv cachelagringen är.
Tillsammans ger dessa tillägg djupa insikter i databasens arbetsbelastning och minnesanvändning, vilket hjälper Er att optimera databasen.
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
- 22
- Lektioner
- 88
Vanliga frågor
Är lektionen ”Använda pg_stat_statements och pg_buffercache” gratis?
Ja – du kan läsa vilka 3 lektioner som helst i lärvägen Prestandaoptimering och frågeoptimering i PostgreSQL, inklusive ”Använda pg_stat_statements och pg_buffercache”, kostnadsfritt i sin helhet här på webben. Därefter låser CoddyKit PRO upp alla lektioner, plus interaktiv övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Kursen i Prestandaoptimering och frågeoptimering i PostgreSQL innehåller totalt 4 lektioner.
Vad lär jag mig i ”Använda pg_stat_statements och pg_buffercache”?
Utnyttja kraftfulla tillägg som `pg_stat_statements` och `pg_buffercache` för djupgående insikter i prestandan. Ni övar på Prestandaoptimering och frågeoptimering i PostgreSQL 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 Prestandaoptimering och frågeoptimering i PostgreSQL?
Du behöver inga förkunskaper. Utbildningen i Prestandaoptimering och frågeoptimering i PostgreSQL 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 ”Använda pg_stat_statements och pg_buffercache”?
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 Prestandaoptimering och frågeoptimering i PostgreSQL-lektionen?
Ja. Varje Prestandaoptimering och frågeoptimering i PostgreSQL-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
- Använda pg_stat_statements och pg_buffercache
- Loggningskonfiguration för analys
- Integration med externa övervakningsverktyg
- Diagnostisera aktivitet i realtid med pg_stat_activity