Prestandaoptimering och frågeoptimering i PostgreSQL · Lektion

Konfigurera och finjustera autovacuum

Lär dig konfigurera och finjustera autovacuum-daemonen för optimal prestanda och underhåll.

Lektion 2 av 411 steg

Konfigurera och finjustera autovacuum är en gratis lektion i Prestandaoptimering och frågeoptimering i PostgreSQL på CoddyKit. Detta är lektion 2 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.

Optimera databasen med autovacuum

Välkommen till finjusteringen av PostgreSQL:s autovacuum! Efter att ha lärt dig om MVCC och VACUUM ska vi gå igenom hur du hanterar denna viktiga bakgrundsprocess.

Autovacuum återtar automatiskt utrymme och uppdaterar statistik, vilket förhindrar prestandaproblem som tabelluppsvällning och långsamma frågor.

Autovacuum:s automatiska uppgifter

Autovacuum-demonen körs i bakgrunden och övervakar hela tiden databasen efter tabeller som behöver åtgärdas. Den utför två huvudåtgärder:

  • VACUUM: Återtar utrymme som upptas av ”döda” rader och gör det tillgängligt för nya data.
  • ANALYZE: Uppdaterar tabellstatistiken och hjälper frågeplaneraren att välja de effektivaste körplanerna.

Var du hittar autovacuum-inställningarna

De flesta autovacuum-inställningarna finns i PostgreSQL:s konfigurationsfil, som vanligtvis heter postgresql.conf. Du kan också ändra dem på databas- eller tabellnivå.

Kom ihåg att starta om PostgreSQL eller läsa om konfigurationen för att ändringarna ska börja gälla!

SHOW config_file;

Aktivera eller inaktivera autovacuum

Den mest grundläggande inställningen är autovacuum. Den är vanligtvis aktiverad som standard, och för de flesta produktionssystem bör du låta den vara aktiverad!

Om du inaktiverar den måste du köra vacuum manuellt, vilket lätt kan glömmas bort och leda till allvarliga prestandaproblem.

ALTER SYSTEM SET autovacuum = on;

När autovacuum kör vacuum på tabeller

Autovacuum utlöser en VACUUM-åtgärd när ett visst antal döda rader har samlats på hög. Detta styrs av två parametrar:

  • autovacuum_vacuum_scale_factor: En procentandel av tabellens storlek (t.ex. 0.2 för 20 %).
  • autovacuum_vacuum_threshold: Ett fast minsta antal döda rader.

Vacuum utlöses när (dead_rows > autovacuum_vacuum_threshold + table_rows * autovacuum_vacuum_scale_factor).

Beräkna när vacuum utlöses

Anta att autovacuum_vacuum_threshold är 50 och autovacuum_vacuum_scale_factor är 0.2 (20 %). För en tabell med 1 000 rader utlöses vacuum när:

  • dead_rows > 50 + (1000 * 0.2)
  • dead_rows > 50 + 200
  • dead_rows > 250

Du kan justera dessa värden för mycket aktiva eller mycket statiska tabeller.

När autovacuum analyserar tabeller

På liknande sätt som vid vacuum utlöser autovacuum en ANALYZE-åtgärd baserat på ett tröskelvärde:

  • autovacuum_analyze_scale_factor: En procentandel av tabellens storlek.
  • autovacuum_analyze_threshold: Ett fast minsta antal ändrade rader.

Analysen säkerställer att frågeplaneraren har uppdaterad statistik för optimala frågeplaner, vilket förhindrar långsamma frågor.

Autovacuum: frekvens och samtidighet

Ytterligare två viktiga parametrar:

  • autovacuum_naptime: Hur länge autovacuum väntar mellan kontrollerna av databaser (t.ex. ’1min’). En kortare väntetid innebär tätare kontroller.
  • autovacuum_max_workers: Det maximala antalet autovacuum-processer som kan köras samtidigt i alla databaser. Fler workers innebär att fler vacuum- och analysåtgärder kan köras samtidigt.

Anpassa autovacuum per tabell

Ibland kan en tabell behöva andra autovacuum-inställningar än de globala standardvärdena. En mycket stor tabell som uppdateras ofta kan till exempel dra nytta av mer aggressiv vacuum-körning.

Du kan åsidosätta de flesta autovacuum-parametrarna för enskilda tabeller med ALTER TABLE.

ALTER TABLE my_large_table SET (autovacuum_vacuum_scale_factor = 0.05);

Snabbkontroll av autovacuum

Autovacuum hjälper till att hålla databasen välfungerande. Låt oss testa dina kunskaper om hur det avgör när en tabell ska köras med vacuum.

Sammanfattning av autovacuum-inställningar

Bra jobbat! Du har lärt dig att konfigurera och finjustera PostgreSQL:s autovacuum-demon.

  • Autovacuum utför automatiskt VACUUM och ANALYZE.
  • Viktiga parametrar styr när (skalningsfaktor och tröskelvärde) och hur ofta (väntetid) det körs.
  • Du kan anpassa inställningarna globalt i postgresql.conf eller per tabell med ALTER TABLE.

Rätt inställningar för autovacuum är avgörande för att upprätthålla databasens prestanda och förhindra uppsvällning.

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 ”Konfigurera och finjustera autovacuum” gratis?

Ja – du kan läsa vilka 3 lektioner som helst i lärvägen Prestandaoptimering och frågeoptimering i PostgreSQL, inklusive ”Konfigurera och finjustera autovacuum”, 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 ”Konfigurera och finjustera autovacuum”?

Lär dig konfigurera och finjustera autovacuum-daemonen för optimal prestanda och underhåll. 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 2 av 4.

Hur lång tid tar lektionen ”Konfigurera och finjustera autovacuum”?

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. Förstå MVCC och VACUUM
  2. Konfigurera och finjustera autovacuum
  3. Transaktionsisoleringsnivåernas påverkan
  4. Förhindra att transaktions-ID:n slår runt
← Tillbaka till Prestandaoptimering och frågeoptimering i PostgreSQL