Konfigurera autovacuum-serverparametrar

Slutförd

Vakuumprocessen konfigureras med hjälp av autovacuum-serverparametrarna som gör att du kan optimera vakuumprocessen för din arbetsbelastning. I Azure-portalen väljer du din Azure Database for PostgreSQL-server och väljer Serverparametrar på den vänstra menyn. I sökfältet anger du autovacuum. Alternativt kan vi använda SQL för att fråga systemkatalogvyerna för att hitta den aktuella konfigurationen av autovacuum med hjälp av följande fråga.

SELECT *
FROM pg_settings 
WHERE "name" LIKE '%autovacuum%';
Parameternamn Standardvärde beskrivning
autovacuum ON Aktiverar eller inaktiverar autovacuum-serverprocessen. Autovacuum ska alltid vara aktiverat.
autovacuum_analyze_scale_factor 0,1 Anger en bråkdel av tabellen som ska läggas till i autovacuum_vacuum_threshold när du bestämmer om en vakuumåtgärd ska utlösas. Till exempel är 0,2 20 procent av tabellstorleken.
autovacuum_analyze_threshold 50 Antalet infogade, uppdaterade eller borttagna rader som behövs för att utlösa analysprocessen för en tabell.
autovacuum_freeze_max_age 200000000 Maximal ålder (i transaktioner) innan autovacuum utlöses i en tabell för att förhindra omslutning av transaktions-ID.
autovacuum_max_workers 3 Det maximala antalet autovacuum-processer som körs samtidigt, förutom autovacuum-startprogrammet.
autovacuum_multixact_freeze_max_age 400000000 Maximal ålder (i multixakt) innan autovacuum utlöses på en tabell för att förhindra multixact-omslutning.
autovacuum_naptime 60 sekunder Fördröjningen mellan autovacuum-processer i en databas. I varje omgång undersöker daemon databasen och utfärdar VACUUM- och ANALYZE-kommandon efter behov för tabeller i databasen.
autovacuum_vacuum_cost_limit -1 Den maximala kostnaden för automatisk vakuumdrift. Om -1 anges, vilket är standardvärdet, används det vanliga vacuum_cost_limit värdet. Med fler än en arbetare distribueras värdet proportionellt mellan de autovacuum-arbetare som körs. Summan för varje arbetare får inte överskrida värdet för den här variabeln.
autovacuum_vacuum_insert_threshold 1000 Antalet infogade rader som utlöser vakuum för en tabell.
autovacuum_vacuum_scale_factor 0.2 Används med autovacuum_vacuum_threshold. Bråkdelen av en tabell som används för att avgöra om ett vakuum ska utlösas.
autovacuum_vacuum_threshold 50 Det minsta antalet uppdaterade, infogade eller borttagna rader som utlöser ett vakuum för en tabell.
autovacuum_vacuum_insert_scale_factor 0.2 Anger en bråkdel av tabellstorleken som ska läggas till i autovacuum_vacuum_insert_threshold för att utlösa vakuumprocessen.
autovacuum_work_mem -1 KB Det maximala minne som varje autovacuumprocess kan använda.
log_autovacuum_min_duration -1 Tiden i millisekunder som loggas av autovacuum-åtgärderna.

Vakuumprocessen bör inte köras för ofta eller för sällan. Den optimala frekvensen beror på arbetsbelastningen. Testa var och en av autovacuum-parametrarna för att hitta det som fungerar bäst för din arbetsbelastning. Kostnaden för dammsugningsprocessen omfattar:

  • Datasidor låses när vakuum körs.
  • Vakuumprocessen förbrukar beräkningstid och minne.

Optimera vakuum på tabellnivå

I Azure Database for PostgreSQL kan autovacuum-parametrar anges på tabellnivå. När vissa tabeller uppdateras mer än andra kan det förbättra prestandan. Ett exempel på hur du ställer in autovacuum på tabellnivå:

ALTER TABLE mytable SET (autovacuum_vacuum_threshold = 1000);
​ALTER TABLE mytable SET (autovacuum_vacuum_scale_factor = 0.1);
ALTER TABLE mytable SET (autovacuum_vacuum_cost_limit = 1000);
ALTER TABLE mytable SET (autovacuum_vacuum_cost_delay = 10);

På tabellnivå är autovacuum en synkron process. Ju större procentandel döda tupplar som en tabell har, desto större blir kostnaden för autovacuumprocessen.

Överväg att dela upp tabellen i flera tabeller för tabeller med hög uppdateringshastighet. Den här uppdelningen hjälper till att parallellisera autovacuum och minska "kostnaden" för en tabell. Du kan också öka antalet parallella autovacuum-arbetare.