Konfigurera autovacuum-serverparametrar
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.