Identificazione e risoluzione dei blocchi per i processi di vacuum aggressivi in RDS per PostgreSQL - Amazon Relational Database Service

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Identificazione e risoluzione dei blocchi per i processi di vacuum aggressivi in RDS per PostgreSQL

In PostgreSQL, il processo di vacuum è fondamentale per garantire l’integrità del database poiché consente di recuperare spazio di archiviazione e previene eventuali problemi di wraparound degli ID transazione. Tuttavia, in alcune situazioni è possibile che il processo di vacuum non funzioni come desiderato; le conseguenze possono essere: riduzione delle prestazioni, bloat dello spazio di archiviazione e impatto sulla disponibilità dell’istanza database in uso a causa del wraparound degli ID transazione. Pertanto, l’identificazione e la risoluzione dei suddetti problemi sono essenziali per garantire prestazioni e disponibilità ottimali del database. Per ulteriori informazioni sul processo di autovacuum, consulta Informazioni sull’autovacuum in ambienti Amazon RDS per PostgreSQL.

La funzione postgres_get_av_diag() aiuta a identificare i problemi che impediscono o ritardano l’avanzamento dei processi di vacuum aggressivi. Vengono forniti dei suggerimenti, che possono includere comandi per risolvere il problema laddove esso sia identificabile o indicazioni per ulteriori operazioni di diagnosi laddove il problema non sia identificabile. Eventuali elementi bloccanti per i processi di vacuum aggressivi vengono segnalati quando l’età supera la soglia di autovacuum adattivo di RDS, che corrisponde a 500 milioni di ID transazione.

Qual è l’età dell’ID transazione?

La funzione age() per gli ID transazione calcola il numero di transazioni che sono state eseguite a partire dall’ID transazione non bloccato meno recente per un database (pg_database.datfrozenxid) o una tabella (pg_class.relfrozenxid). Questo valore indica l’attività del database dall’ultima operazione di vacuum aggressiva ed evidenzia il probabile carico di lavoro per i successivi processi VACUUM.

In cosa consiste un processo di vacuum aggressivo?

Un’operazione VACUUM aggressiva esegue una scansione completa di tutte le pagine di una tabella, comprese quelle che solitamente vengono ignorate durante i normali processi VACUUM. Questa scansione approfondita mira a bloccare gli ID transazione che si avvicinano alla loro età massima, prevenendo in modo efficace un problema noto come wraparound degli ID transazione.

Affinché postgres_get_av_diag() li segnali, gli elementi bloccanti devono avere un’età di almeno 500 milioni di transazioni.