Avancerad PostgreSQL: indexering, partitionering och replikering · Lektion

Övervaka indexanvändning

Lär er att övervaka indexens effektivitet med systemvyer och identifiera oanvända eller underpresterande index.

Lektion 2 av 411 steg

Övervaka indexanvändning är en gratis lektion i Avancerad PostgreSQL: indexering, partitionering och replikering på CoddyKit. Detta är lektion 2 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 Avancerad PostgreSQL: indexering, partitionering och replikering, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Avancerad PostgreSQL: indexering, partitionering och replikering innehåller totalt 4 lektioner.

Varför övervaka indexanvändning?

Index är kraftfulla verktyg för att snabba upp frågor, men de är inte gratis. De förbrukar diskutrymme och medför extra kostnader vid ändringar av data (INSERT, UPDATE, DELETE).

Genom att övervaka indexanvändningen kan ni se om indexen faktiskt hjälper er eller bara tar upp plats.

Introduktion till `pg_stat_user_indexes`

PostgreSQL tillhandahåller flera systemvyer för att övervaka databasaktivitet. För indexanvändning är vyn pg_stat_user_indexes er bästa vän.

Den här vyn spårar statistik för index på användardefinierade tabeller och ger insikt i hur ofta varje index skannas.

Viktiga mått för indexanvändning

När Ni frågar pg_stat_user_indexes bör Ni vara uppmärksamma på följande kolumner:

  • idx_scan: Antalet gånger indexet har genomsökts.
  • idx_tup_read: Antalet indexposter som returnerats av genomsökningar.
  • idx_tup_fetch: Antalet aktiva tabellrader som hämtats via indexet.

Dessa visar hur ofta och hur effektivt ett index används.

Hitta oanvända index

Den enklaste vinsten vid indexoptimering är att identifiera index som aldrig används. Ett index med idx_scan = 0 är en stark kandidat för borttagning.

Genom att ta bort oanvända index kan Ni minska diskutrymmet, snabba upp skrivningar och förenkla databasunderhållet.

Demo: Fråga efter oanvända index

Vi kör en fråga för att hitta alla index som aldrig har genomsökts sedan den senaste återställningen av statistiken. Prova att köra det här exemplet:

SELECT
  relname AS table_name,
  indexrelname AS index_name,
  idx_scan
FROM pg_stat_user_indexes
WHERE idx_scan = 0
ORDER BY table_name, index_name;

Bortom oanvända index: underpresterande index

Ett index kan användas (idx_scan > 0) men ändå vara ”underpresterande” om det inte väljs av frågeplaneraren när det borde, eller om det leder till många sekventiella genomsökningar av själva tabellen.

För att upptäcka sådana index behöver vi jämföra indexanvändningen med tabellens övergripande åtkomstmönster.

Insikter från tabellgenomsökningar med `pg_stat_user_tables`

Vyn pg_stat_user_tables tillhandahåller statistik på tabellnivå. Viktiga kolumner är:

  • seq_scan: Antalet sekventiella genomsökningar som har initierats på den här tabellen.
  • idx_scan: Antalet indexgenomsökningar som har initierats på den här tabellen.

Ett högt värde för seq_scan i en stor tabell tyder ofta på ett saknat eller ineffektivt index.

Jämförelse mellan sekventiella genomsökningar och indexgenomsökningar

Genom att jämföra seq_scan och idx_scan från pg_stat_user_tables kan vi identifiera tabeller som ofta genomsöks sekventiellt, även om index finns.

Ett högt förhållande mellan sekventiella genomsökningar och indexgenomsökningar i en tabell tyder på potentiella indexproblem eller frågor som inte använder tillgängliga index.

Demo: Fråga efter genomsökningskvot

Den här frågan beräknar andelen sekventiella genomsökningar för varje tabell. Tabeller med en hög andel seq_scan kan behöva granskas.

SELECT
  relname AS table_name,
  seq_scan,
  idx_scan,
  (seq_scan * 100.0) / (CASE WHEN seq_scan + idx_scan = 0 THEN 1 ELSE seq_scan + idx_scan END) AS seq_scan_percent
FROM pg_stat_user_tables
WHERE seq_scan > 0
ORDER BY seq_scan_percent DESC;

Snabbkontroll

Ni försöker hitta index som tar upp diskutrymme men aldrig används av någon fråga. Vilken systemvy i PostgreSQL bör Ni främst använda för att hitta denna information?

Sammanfattning och nästa steg

Bra jobbat! I den här lektionen har Ni lärt Er att övervaka indexens effektivitet med hjälp av PostgreSQL:s systemvyer.

  • pg_stat_user_indexes hjälper till att hitta oanvända index (idx_scan = 0).
  • pg_stat_user_tables visar balansen mellan sekventiella genomsökningar och indexgenomsökningar i tabeller.
  • Genom att kombinera dessa kan Ni identifiera index som kan tas bort eller behöver undersökas närmare.

I nästa lektion går vi igenom omindexering och hur index hålls i gott skick!

Gratis att börja

Lär dig Avancerad PostgreSQL: indexering, partitionering och replikering 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
11
Lektioner
44

Vanliga frågor

Är lektionen ”Övervaka indexanvändning” gratis?

Ja – hela texten till ”Övervaka indexanvändning” 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 Avancerad PostgreSQL: indexering, partitionering och replikering, kan Ni uppgradera till CoddyKit PRO. Kursen i Avancerad PostgreSQL: indexering, partitionering och replikering innehåller totalt 4 lektioner.

Vad lär jag mig i ”Övervaka indexanvändning”?

Lär er att övervaka indexens effektivitet med systemvyer och identifiera oanvända eller underpresterande index. Ni övar på Avancerad PostgreSQL: indexering, partitionering och replikering 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 Avancerad PostgreSQL: indexering, partitionering och replikering?

Du behöver inga förkunskaper. Utbildningen i Avancerad PostgreSQL: indexering, partitionering och replikering 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 2 av 4.

Hur lång tid tar lektionen ”Övervaka indexanvändning”?

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 Avancerad PostgreSQL: indexering, partitionering och replikering-lektionen?

Ja. Varje Avancerad PostgreSQL: indexering, partitionering och replikering-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. Analysera frågeplaner med EXPLAIN
  2. Övervaka indexanvändning
  3. Omindexering och indexunderhåll
  4. Finjustera indexkostnader med ANALYZE och statistik
← Tillbaka till Avancerad PostgreSQL: indexering, partitionering och replikering