Konfigurace parametrů serveru autovacuum

Dokončeno

Proces vakua se konfiguruje pomocí parametrů serveru autovacuum, které umožňují optimalizovat proces vakua pro vaši úlohu. Na webu Azure Portal vyberte server Azure Database for PostgreSQL a v nabídce vlevo vyberte Parametry serveru. V hledacím panelu zadejte autovacuum. K dotazování zobrazení systémového katalogu můžeme také použít SQL k vyhledání aktuální konfigurace automatického úklidu pomocí následujícího dotazu.

SELECT *
FROM pg_settings 
WHERE "name" LIKE '%autovacuum%';
Název parametru Výchozí Popis
automatické čištění NA Povolí nebo zakáže proces serveru automatického úklidu. Funkce Autovacuum by měla být vždy povolená.
autovacuum_analyze_scale_factor 0.1 Určuje zlomek tabulky, který se má přidat k autovacuum_vacuum_threshold při rozhodování, zda aktivovat vakuovou operaci. Například 0,2 je 20 procent velikosti tabulky.
práh_analyze_autovakuum 50 Počet vložených, aktualizovaných nebo odstraněných řádků potřebných k aktivaci analýze procesu pro libovolnou tabulku.
autovacuum_freeze_max_age 200000000 Maximální stáří (v transakcích) před spuštěním automatického uklízení na tabulce, aby se zabránilo přetečení ID transakce.
autovacuum_max_workers 3 Maximální počet spuštěných procesů automatického úklidu najednou, kromě spouštěče automatického úklidu.
autovacuum_multixact_freeze_max_age 400000000 Maximální věk (v multixactu) před spuštěním automatického vakua na tabulce, aby se zabránilo přetečení multixactu.
autovacuum_naptime 60 sekund Zpoždění mezi procesy automatického čištění v databázi. V každém kole démon zkoumá databázi a podle potřeby vydává příkazy VACUUM a ANALYZE pro tabulky v této databázi.
autovacuum_vacuum_cost_limit -1 Maximální náklady na automatické úklidové operace. Pokud je zadán -1, což je výchozí hodnota, použije se běžná hodnota vacuum_cost_limit. Při více než jednom pracovníkovi je hodnota distribuována úměrně mezi běžící autovacuum procesy. Součet pro každého pracovníka nemůže překročit hodnotu této proměnné.
autovacuum_vacuum_insert_threshold 1000 Počet vložených řádků, které aktivují vakuum pro libovolnou tabulku.
autovacuum_vacuum_scale_factor 0.2 Používá se s autovacuum_vacuum_threshold. Zlomek tabulky sloužící k rozhodnutí, zda se má aktivovat vakuum.
autovacuum_vacuum_threshold 50 Minimální počet aktualizovaných, vložených nebo odstraněných řádků pro aktivaci vakua pro tabulku.
autovacuum_vacuum_insert_scale_factor 0.2 Určuje zlomek velikosti tabulky, která se má přidat do autovacuum_vacuum_insert_threshold k aktivaci procesu vakua.
autovacuum_work_mem -1 kB Maximální paměť, kterou může každý proces automatického úklidu používat.
log_autovacuum_min_duration -1 Doba v milisekundách zaprotokolovaná akcemi automatického úklidu.

Vakuový proces by neměl být spuštěn příliš často nebo příliš zřídka. Optimální frekvence závisí na úloze. Otestujte všechny parametry automatického úklidu a zjistěte, co je pro vaši úlohu nejvhodnější. Náklady na proces úklidu zahrnují:

  • Datové stránky jsou při spuštění vakua uzamčeny.
  • Vakuový proces spotřebovává výpočetní čas a paměť.

Optimalizujte vakuum na úrovni tabulky

Ve službě Azure Database for PostgreSQL je možné nastavit parametry automatického úklidu na úrovni tabulky. Když se některé tabulky aktualizují více než jiné, může zvýšit výkon. Příklad nastavení automatického úklidu na úrovni tabulky:

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);

Na úrovni tabulky je autovacuum synchronní proces. Čím větší je procento mrtvých tůplů, které tabulka obsahuje, tím větší jsou náklady vzniklé procesem autovakuování.

U tabulek s vysokou mírou aktualizací zvažte rozdělení tabulky na více tabulek. Toto rozdělení pomáhá paralelizovat autovacuum a snížit „náklady“ pro libovolnou tabulku. Můžete také zvýšit počet paralelních pracovních procesů automatického úklidu.