Konfigurace parametrů serveru autovacuum

Dokončeno

Proces vakua se konfiguruje pomocí parametrů serveru autovacuum , které vám umožní 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. Na panelu hledání zadejte automatické úklidové součty. 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
autovacuum ON Povolí nebo zakáže proces serveru automatického úklidu. Funkce Automatické úklidy 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í, jestli se má aktivovat operace vakua. Například 0,2 je 20 procent velikosti tabulky.
autovacuum_analyze_threshold 50 Počet vložených, aktualizovaných nebo odstraněných řádků potřebných k aktivaci procesu analýzy pro libovolnou tabulku.
autovacuum_freeze_max_age 200000000 Maximální stáří (v transakcích) před aktivací automatického úklidu v tabulce, aby se zabránilo zabalení 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í stáří (v multixactu) před aktivací automatického úklidu v tabulce, aby se zabránilo multixact wraparoundu.
autovacuum_naptime 60 sekund Zpoždění mezi procesy automatického úklidu 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ána hodnota -1, což je výchozí hodnota, použije se běžná hodnota vacuum_cost_limit. Při více než jednom pracovním procesu se hodnota distribuuje úměrně mezi spuštěné pracovní procesy automatického úklidu. Součet pro každého pracovního procesu 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ěť.

Optimalizace vakua 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. Tím větší je procento mrtvých řazených kolekcí členů, které tabulka obsahuje, tím větší jsou náklady vzniklé procesem automatického úklidu.

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