Determinare se le tabelle nel database devono essere sottoposte a vacuum - 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à.

Determinare se le tabelle nel database devono essere sottoposte a vacuum

La seguente query può essere utilizzata per mostrare il numero di transazioni sbloccate in un database. La colonna datfrozenxid di una riga di database pg_database è il margine inferiore sui normali ID di transazione che appaiono nel database. Questa colonna è il minimo dei valori relfrozenxid per tabella all’interno del database.

SELECT datname, age(datfrozenxid) FROM pg_database ORDER BY age(datfrozenxid) desc limit 20;

Ad esempio, i risultati dell'esecuzione della query precedente potrebbero essere i seguenti.

datname | age mydb | 1771757888 template0 | 1721757888 template1 | 1721757888 rdsadmin | 1694008527 postgres | 1693881061 (5 rows)

Quando l'età di un database raggiunge i due miliardi di ID di transazioni, si verifica il wraparound dell’ID della transazione (XID) e il database entra in modalità di sola lettura. Puoi utilizzare questa query per produrre un parametro ed eseguirla alcune volte al giorno. Per impostazione predefinita, l'autovacuum è impostato per mantenere l'età delle transazioni a non più di 200,000,000 (autovacuum_freeze_max_age).

Un esempio di strategia di monitoraggio potrebbe avere questo aspetto:

  • Impostare il valore autovacuum_freeze_max_age su 200 milioni di transazioni.

  • Se una tabella raggiunge 500 milioni di transazioni sbloccate, viene attivato un allarme a bassa gravità. Questo non è un valore irragionevole, ma può indicare che l'autovacuum non riesce a mantenere il passo.

  • Se una tabella invecchia a un miliardo, questo dovrebbe essere trattato come un allarme per cui intervenire. In generale, si desidera mantenere le età più vicine a autovacuum_freeze_max_age per motivi di prestazioni. Si consiglia di investigare utilizzando le raccomandazioni che seguono.

  • Se una tabella raggiunge 1,5 milioni di transazioni senza vacuum, viene attivato un allarme a gravità elevata. A seconda della velocità con cui il database utilizza gli ID delle transazioni, questo allarme può indicare che il tempo del sistema per eseguire l'autovacuum sta per scadere. In questo caso, consigliamo di risolvere il problema immediatamente.

Se una tabella superando costantemente queste soglie, modifica ulteriormente i parametri dell'autovacuum. Per impostazione predefinita, l’utilizzo manuale di VACUUM (che ha disabilitato i ritardi basati sui costi) è più aggressivo dell'autovacuum predefinito, ma è anche più intrusivo per il sistema nel suo complesso.

Consigliamo quanto segue: