Parameters voor de autovacuum-server configureren
Het vacuümproces wordt geconfigureerd met behulp van de autovacuum serverparameters waarmee u het vacuümproces voor uw workload kunt optimaliseren. Selecteer uw Azure Database for PostgreSQL-server in Azure Portal en selecteer Serverparameters in het linkermenu. Voer in de zoekbalk autovacuumin. U kunt ook SQL gebruiken om een query uit te voeren op de systeemcatalogusweergaven om de huidige configuratie van autovacuum te vinden met behulp van de volgende query.
SELECT *
FROM pg_settings
WHERE "name" LIKE '%autovacuum%';
Parameternaam | Verstek | Beschrijving |
---|---|---|
autovacuum | AAN | Hiermee schakelt u het proces van de autovacuum-server in of uit. Autovacuum moet altijd zijn ingeschakeld. |
autovacuum_analyze_scale_factor | 0.1 | Hiermee wordt een fractie van de tabel gespecificeerd die moet worden toegevoegd aan autovacuum_vacuum_threshold bij het bepalen of een vacuümbewerking moet worden uitgevoerd. 0,2 is bijvoorbeeld 20 procent van de tabelgrootte. |
autovacuum_analyze_threshold (drempelwaarde voor automatisch analyseren) | 50 | Het aantal ingevoegde, bijgewerkte of verwijderde rijen dat nodig is voor het activeren van de het analyseren van proces voor een tabel. |
autovacuum_freeze_max_age | 200000000 | Maximale leeftijd (in transacties) voordat autovacuum op een tabel wordt geactiveerd om overloop van transactienummers te voorkomen. |
autovacuum_max_workers | 3 | Het maximum aantal autovacuumprocessen dat tegelijkertijd wordt uitgevoerd, behalve het startprogramma voor autovacuum. |
autovacuum_multixact_freeze_max_age | 400000000 | Maximale leeftijd (in multixact) voordat autovacuum op een tabel wordt geactiveerd om multixact wraparound te voorkomen. |
autovacuum_naptime | 60 seconden | De vertraging tussen autovacuumprocessen in een database. In elke ronde onderzoekt de daemon de database en voert indien nodig VACUUM- en ANALYZE-commando's uit voor tabellen in die database. |
autovacuum_vacuum_cost_limit | -1 | De maximale kosten voor automatische vacuümbewerkingen. Als -1 is opgegeven, wat de standaardwaarde is, wordt de normale vacuum_cost_limit waarde gebruikt. Bij meerdere werknemers wordt de waarde proportioneel verdeeld over de actieve autovacuum-processen. De som voor elke werker mag de waarde van deze variabele niet overschrijden. |
autovacuum_vacuum_insert_threshold | 1000 | Het aantal ingevoegde rijen dat vacuüm activeert voor een tabel. |
autovacuum_vacuum_scale_factor | 0.2 | Gebruikt met autovacuum_vacuum_threshold. Het deel van een tabel dat wordt gebruikt om te bepalen of een vacuüm moet worden geactiveerd. |
autovacuum_vacuum_threshold | 50 | Het minimale aantal bijgewerkte, ingevoegde of verwijderde rijen om een vacuüm voor een tabel te activeren. |
autovacuum_vacuum_insert_scale_factor | 0.2 | Hiermee geeft u een fractie van de tabelgrootte op die moet worden toegevoegd aan autovacuum_vacuum_insert_threshold om het vacuümproces te activeren. |
autovacuum_work_mem | -1 KB | Het maximale geheugen dat elk autovacuumproces kan gebruiken. |
log_autovacuum_min_duration | -1 | De tijd in milliseconden, geregistreerd door de autovacuum-acties. |
Het vacuümproces mag niet te vaak of te weinig worden uitgevoerd. De optimale frequentie is afhankelijk van de workload. Test elk van de parameters voor autovacuum om te bepalen wat het beste werkt voor uw workload. De kosten van het vacuümproces omvatten:
- Gegevenspagina's worden vergrendeld wanneer vacuüm wordt uitgevoerd.
- Het vacuümproces verbruikt rekentijd en geheugen.
Vacuüm optimaliseren op tafelniveau
In Azure Database for PostgreSQL kunnen autovacuum-parameters worden ingesteld op tabelniveau. Wanneer sommige tabellen meer worden bijgewerkt dan andere, kunnen de prestaties worden verbeterd. Een voorbeeld van het instellen van autovacuum op tabelniveau:
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);
Op tabelniveau is autovacuum een synchroon proces. Hoe groter het percentage dode tuples dat een tabel heeft, hoe groter de 'kosten' die worden gemaakt door het autovacuumproces.
Voor tabellen met een hoog aantal updates kunt u overwegen om de tabel op te splitsen in meerdere tabellen. Deze splitsing helpt bij het parallelliseren van autovacuum en het verlagen van de 'kosten' voor elke tabel. U kunt ook het aantal parallelle autovacuum-werknemers verhogen.