Prestandaoptimering och frågeoptimering i PostgreSQL · Lektion

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.

Lektion 1 av 411 steg

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.

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
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

  1. Använda pg_stat_statements och pg_buffercache
  2. Loggningskonfiguration för analys
  3. Integration med externa övervakningsverktyg
  4. Diagnostisera aktivitet i realtid med pg_stat_activity
← Tillbaka till Prestandaoptimering och frågeoptimering i PostgreSQL