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à.
Consigliamo vivamente di usare la caratteristica di autovacuum per mantenere l'integrità dell'istanza database di PostgreSQL. La funzione di autovaacuum automatizza l'esecuzione del comando VACUUM e ANALYZE. Verifica la presenza di tabelle con un numero elevato di tuple inserite, aggiornate o eliminate. Dopo questa verifica, recupera lo storage rimuovendo i dati obsoleti o le tuple da database PostgreSQL.
Per impostazione predefinita, l'autovacuum è attivato per le istanze RDS per PostgreSQL Aurora PostgreSQL DB create PostgreSQL DB predefiniti. Per impostazione predefinita vengono impostati anche altri parametri di configurazione associati alla caratteristica di autovacuum. Poiché questi valori di default sono in qualche modo generici, è possibile trarre vantaggio dalla regolazione di alcuni parametri associati alla caratteristica di autovacuum per il carico di lavoro specifico.
Best practice per l'utilizzo di PostgreSQLPer informazioni di alto livello, consulta.
Argomenti
Riduzione della probabilità che si verifichi il wraparound dell’ID delle transazioni
Determinare se le tabelle nel database devono essere sottoposte a vacuum
Determinare quali tabelle sono attualmente idonee per l'Autovacuum
Determinare se l'Auotvacuum è attualmente in esecuzione e per quanto tempo
Indicizzare di nuovo una tabella quando l'autovacuum è in esecuzione
Comprensione del comportamento dell'autovacuum con database non validi
Allocazione di memoria per il vacuum
Uno dei parametri più importanti che influenzano le prestazioni dell'autovacuum è il parametro autovacuum_work_mem
autovacuum_work_mem
precedenti di RDS per PostgreSQL PostgreSQL, il parametro è impostato su -1, a indicare che al suo posto viene utilizzata l'impostazione di. maintenance_work_mem
Per tutte le altre versioni, autovacuum_work_mem
è determinato da GREATEST ({/32768}, 65536). DBInstance ClassMemory
Le operazioni manuali di aspirazione utilizzano sempre l'maintenance_work_mem
impostazione, con un'impostazione predefinita di GREATEST ({DBInstanceClassMemory/63963136 *1024}, 65536), e può anche essere regolata a livello di sessione utilizzando il comando per operazioni manuali più mirate. SET
VACUUM
autovacuum_work_mem
Determina che la memoria di autovacuum contenga gli identificatori delle tuple morte () per gli indici di aspirazione. pg_stat_all_tables.n_dead_tup
Quando esegui calcoli per determinare il autovacuum_work_mem
valore del parametro, tieni presente quanto segue:
-
Se impostate il parametro su un valore troppo basso, il processo di sottovuoto potrebbe dover scansionare la tabella più volte per completare il suo lavoro. Queste scansioni multiple possono avere un impatto negativo sulle prestazioni Per istanze più grandi, l'impostazione
maintenance_work_mem
oautovacuum_work_mem
su almeno 1 GB può migliorare le prestazioni delle tabelle di aspirazione con un numero elevato di tuple morte. Tuttavia, nelle versioni 16 e precedenti di PostgreSQL, l'utilizzo della memoria di vacuum è limitato a 1 GB, il che è sufficiente per elaborare circa 179 milioni di tuple morte in un unico passaggio. Se una tabella ha più tuple morte di questa, vacuum dovrà effettuare più passaggi tra gli indici della tabella, aumentando notevolmente il tempo necessario. A partire dalla versione 17 di PostgreSQL, non c'è un limite di 1 GB e autovacuum può elaborare più di 179 milioni di tuple utilizzando alberi radix.Un identificatore di tupla ha una dimensione di 6 byte. Per stimare la memoria necessaria per svuotare un indice di una tabella, esegui una query
pg_stat_all_tables.n_dead_tup
per trovare il numero di tuple morte, quindi moltiplica questo numero per 6 per determinare la memoria necessaria per svuotare l'indice in un unico passaggio. È possibile utilizzare la seguente interrogazione:SELECT relname AS table_name, n_dead_tup, pg_size_pretty(n_dead_tup * 6) AS estimated_memory FROM pg_stat_all_tables WHERE relname = '
name_of_the_table
'; -
Il parametro
autovacuum_work_mem
funziona insieme al parametroautovacuum_max_workers
. Ogni lavoratoreautovacuum_max_workers
può utilizzare la memoria allocata. Se si dispone di molte tabelle di piccole dimensioni, assegna piùautovacuum_max_workers
e menoautovacuum_work_mem
. Se disponi di tabelle di grandi dimensioni (più grandi di 100 GB), alloca più memoria e meno processi di lavoro. Si deve avere abbastanza memoria allocata affinché si abbia esito positivo sulle tabelle più grandi. Pertanto, assicuratevi che la combinazione di processi di lavoro e memoria sia uguale alla memoria totale che desiderate allocare.
Riduzione della probabilità che si verifichi il wraparound dell’ID delle transazioni
In alcuni casi, le impostazioni del gruppo di parametri correlate all'autovacuum potrebbero non essere abbastanza aggressive da prevenire il wraparound dell'ID delle transazioni. Per risolvere questo problema, RDS for PostgreSQL Aurora PostgreSQL un meccanismo che adatta automaticamente i valori dei parametri autovacuum. L'autovacuum adattivo Una spiegazione dettagliata di Wraparound della transazione
rds.adaptive_autovacuum
Si consiglia di tenere questa opzione attivata. Tuttavia, per disattivare l'ottimizzazione adattiva del parametro di autovacuum, impostare il parametro rds.adaptive_autovacuum
su 0 o OFF.
Il wraparound degli ID di transazione è ancora possibile anche quando Amazon RDS Aurora Amazon RDS i parametri dell'autovacuum. Ti invitiamo a implementare un CloudWatch allarme Amazon per il wraparound degli ID delle transazioni. Per ulteriori informazioni, consulta il post Implementazione di un sistema di avviso rapido per il wraparound degli ID delle transazioni in RDS per PostgreSQL
Con l'ottimizzazione adattiva dei parametri dell'autovacuum attivata, Amazon RDS inizia a regolare i parametri dell'autovacuum quando la CloudWatch metrica MaximumUsedTransactionIDs
raggiunge il valore del parametro o 500.000.000, a seconda di quale sia il maggiore. autovacuum_freeze_max_age
Amazon RDS continua ad adattare i parametri per l’autovacuum se una tabella continua a tendere verso i wraparound dell’ID della transazione. Ognuno di questi aggiustamenti dedica più risorse all’autovacuum per evitare il wraparound. Amazon RDS aggiorna i seguenti parametri correlati all’autovacuum:
RDS modifica questi parametri solo se il nuovo valore rende l’autovacuum più aggressivo. I parametri vengono modificati nella memoria sull’istanza database. I valori nel gruppo di parametri non vengono modificati. Per visualizzare le impostazioni in memoria correnti, utilizzare il comando SQL PostgreSQL SHOW
Quando Amazon RDS modifica uno qualsiasi dei parametri autovacuum, genera un evento per l’istanza database interessata. Questo evento è visibile su AWS Management Console e tramite l'API Amazon RDS. Dopo che la MaximumUsedTransactionIDs
CloudWatch metrica è tornata al di sotto della soglia, Amazon RDS ripristina i parametri relativi all'autovacuum in memoria ai valori specificati nel gruppo di parametri. Quindi genera un altro evento corrispondente a questa modifica.