Konfigurace parametrů serveru autovacuum
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.