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à.
Raccolta dei rifiuti in Amazon DocumentDB
Amazon DocumentDB implementa un'architettura di database MVCC (Multi-version Concurrency Control) che crea nuove versioni di voci di documenti e indici per ogni operazione di aggiornamento. Questa architettura fornisce l'isolamento della lettura consentendo alle interrogazioni di lettura di utilizzare documenti con versioni diverse senza blocchi.
Argomenti
Informazioni sulla Garbage Collection in Amazon DocumentDB
Garbage collection (GC) è un processo automatizzato in background che mantiene prestazioni e disponibilità di sistema ottimali in Amazon DocumentDB. A differenza dei database tradizionali che sovrascrivono i dati sul posto, l'architettura MVCC di Amazon DocumentDB crea nuove versioni di documenti e voci di indice ad ogni operazione di aggiornamento. Ogni operazione di scrittura che porta a una nuova versione del documento utilizza un ID MVCC univoco proveniente da un contatore finito, il che rende essenziale una pulizia efficiente. Nel tempo, queste vecchie versioni si accumulano e devono essere ripulite per evitare un peggioramento delle prestazioni.
Funzioni di raccolta dei rifiuti
Garbage collector svolge tre funzioni essenziali:
Recupera spazio di archiviazione: rimuove le versioni obsolete di documenti e indici che non sono più necessarie per le query attive, liberando spazio per future operazioni di scrittura.
Impedisce l'overflow dell'ID MVCC: previene l'overflow dell'ID MVCC gestendo il contatore finito di MVCC. IDs Senza questa gestione, il contatore alla fine raggiungerebbe il suo limite, forzando il database a passare alla modalità temporanea di sola lettura fino al riciclo. IDs
Mantiene le prestazioni delle query: mantiene le prestazioni ottimali delle query eliminando le versioni obsolete dei documenti che altrimenti si accumulerebbero e rallenterebbero l'elaborazione delle query.
Processo di raccolta dei rifiuti
Il processo GC funziona per raccolta e può avere più processi in esecuzione contemporaneamente su diverse raccolte. Il processo consiste in quattro fasi sequenziali:
Identificazione: il sistema identifica le versioni di documenti e indici a cui non fanno più riferimento le transazioni o le query attive.
Caricamento della memoria: i vecchi documenti e le voci dell'indice vengono caricati in memoria se non sono già presenti.
Eliminazione: le versioni obsolete vengono eliminate definitivamente per recuperare spazio di archiviazione.
Riciclaggio degli ID MVCC: il sistema ricicla l'MVCC IDs delle versioni eliminate per nuove operazioni.
Quando Garbage Collection completa l'elaborazione delle vecchie versioni dei documenti, rimuove il file MVCC più vecchio dal sistema. IDs Questa pulizia è fondamentale per prevenire l'overflow degli ID MVCC riciclando MVCC e rendendoli disponibili per nuove IDs operazioni di scrittura nel cluster. Senza questo processo di riciclaggio, il sistema finirebbe per esaurire il contatore ID MVCC finito e passare allo stato di sola lettura.
Pianificazione della raccolta dei rifiuti
La raccolta dei rifiuti viene eseguita automaticamente in background a intervalli periodici. La tempistica e la frequenza si regolano dinamicamente in base al carico del sistema, alle risorse disponibili, al volume di scrittura e ai livelli di consumo dell'ID MVCC. Durante un'elevata attività di scrittura, il processo GC viene eseguito più frequentemente per gestire l'aumento del numero di versioni dei documenti.
Monitoraggio della raccolta dei rifiuti
Metriche a livello di cluster
AvailableMVCCIds
Posizione — Amazon CloudWatch
Descrizione: un contatore che mostra il numero di operazioni di scrittura rimanenti disponibili prima di raggiungere lo zero. Quando questo contatore raggiunge lo zero, il cluster entra in modalità di sola lettura fino a quando non IDs viene recuperato e riciclato. Il contatore diminuisce a ogni operazione di scrittura e aumenta man mano che la Garbage Collection ricicla il vecchio MVCC. IDs
Raccomandazione: imposta un allarme quando il valore scende al di sotto di 1,3 miliardi. Questo avviso precoce consente di adottare le misure consigliate discusse più avanti.
LongestRunningGCProcess
Posizione — Amazon CloudWatch
Descrizione: Durata in secondi del processo di raccolta dei rifiuti attivo più lungo. Si aggiorna ogni minuto e tiene traccia solo delle operazioni attive, esclusi i processi che vengono completati entro la finestra di un minuto.
Raccomandazione:
Metriche a livello di raccolta
MVCCIDStats: MvccIdAgeScale
Posizione — comando CollStats del database
Descrizione: misura l'età dell'ID MVCC su una scala da 0 a 1, dove 1 indica l'età massima prima che un cluster entri in uno stato di sola lettura. Utilizza questa metrica insieme
AvailableMVCCIds
per identificare le raccolte contenenti l'MVCC più vecchio IDs che stanno invecchiando il cluster.Raccomandazione: mantieni i valori inferiori a 0,3 per ogni raccolta.
GCRuntimeStats
Posizione — comando CollStats del database
Descrizione: fornisce una cronologia di due mesi delle metriche relative alla raccolta dei rifiuti, tra cui esecuzioni totali, durata media e durata massima. Include solo le operazioni di raccolta dei rifiuti che durano più di cinque minuti per garantire statistiche significative.
UnusedStorageSize
(livello di raccolta)
Posizione — comando CollStats del database
Descrizione: stima lo spazio di archiviazione inutilizzato in una raccolta in base a statistiche campionate. Include lo spazio dei documenti eliminati e dei segmenti vuoti.
Metriche a livello di indice
UnusedStorageSize
(livello di indice)
Posizione: comando Database IndexStats
Descrizione: stima lo spazio di archiviazione inutilizzato in un indice in base a statistiche campionate. Include lo spazio occupato dalle voci di indice obsolete e dai segmenti vuoti.
Raccomandazione: utilizzate il
reIndex
comando per ricostruire gli indici senza tempi di inattività e recuperare lo spazio inutilizzato. Per maggiori dettagli, consulta Gestione degli indici.
Esempio di output collStats
{
"ns": "xid_consumption_test_db.xid_test_collection",
"MVCCIdStats": {
"MVCCIdScale": 0.03
},
"gcRuntimeStats": {
"numRuns": 1,
"historicalAvgRuntime": 3295,
"historicalMaxRuntime": 3295,
"lastRuntime": 3295,
"lastRuntimeStart": ISODate("2025-06-24T08:47:14Z")
},
"collScans": 14,
"count": 30000000,
"size": 1320000000,
"avgObjSize": 44,
"storageSize": 6461497344,
"capped": false,
"nindexes": 2,
"totalIndexSize": 9649553408,
"indexSizes": {
"_id_": 1910661120,
"c_1": 7738892288
},
"unusedStorageSize": {
"unusedBytes": 4201881600,
"unusedPercent": 65.05
},
"cacheStats": {
"collBlksHit": 171659016,
"collBlksRead": 754061,
"collHitRatio": 99.5627,
"idxBlksHit": 692563636,
"idxBlksRead": 1177921,
"idxHitRatio": 99.8303
},
"idxScans": 41823984,
"opCounter": {
"numDocsIns": 0,
"numDocsUpd": 20911992,
"numDocsDel": 0
},
"lastReset": "2025-06-24 05:57:08.219711+00",
"ok": 1,
"operationTime": Timestamp(1750968826, 1)
}
Domande frequenti
Argomenti
Come posso identificare se la raccolta dei rifiuti non funziona in modo efficiente?
Monitora questi segnali di avvertimento che indicano una raccolta dei rifiuti inefficiente:
Eccessivo aumento della raccolta:
UnusedStorageSize
metriche in costante aumento durante operazioni di scrittura impegnative o eliminazioni di massa, specialmente con indici di grandi dimensioniLatenza di interrogazione ridotta: maggiore latenza delle query dovuta all'accumulo di documenti non funzionanti
Durata GC estesa: le operazioni di raccolta dei rifiuti richiedono più tempo rispetto alle medie storiche in
GCRuntimeStats
Elaborazione GC elevata: un
LongestRunningGCProcess
valore elevato indica che il Garbage Collector non è in grado di tenere il passo con le richieste del sistema
La raccolta dei rifiuti influisce sulle prestazioni del mio database?
In condizioni normali, la raccolta dei rifiuti ha un impatto minimo sulle prestazioni. Tuttavia, quando la raccolta dei rifiuti è in ritardo, è possibile che si verifichino:
aumento dei costi di archiviazione dovuti all'accumulo di documenti obsoleti.
prestazioni di query più lente a causa di voci di indice obsolete.
modalità temporanea di sola lettura se MVCC è esaurito. IDs
maggiore utilizzo delle risorse durante le operazioni di raccolta intensive, specialmente su istanze più piccole.
Posso attivare manualmente la raccolta dei rifiuti?
No, la raccolta dei rifiuti in Amazon DocumentDB non può essere attivata manualmente. Il sistema gestisce automaticamente la raccolta dei rifiuti nell'ambito delle sue operazioni di manutenzione interne.
Quali allarmi devo impostare come best practice operativa?
Ti consigliamo di configurare il monitoraggio sia a livello di cluster che di raccolta per garantire prestazioni ottimali del tuo sistema Amazon DocumentDB.
Per il monitoraggio a livello di cluster
Inizia creando un CloudWatch allarme per la AvailableMVCCId
metrica con una soglia di 1,3 miliardi. In questo modo avrai il tempo sufficiente per agire prima che la metrica raggiunga lo zero, dopodiché il cluster entrerà in modalità di sola lettura. Tieni presente che questa metrica può variare in base ai tuoi modelli di utilizzo specifici. Alcuni clienti la vedono scendere al di sotto di 1,3 miliardi e poi recuperare oltre 1,5 miliardi man mano che la raccolta dei rifiuti completa il suo lavoro.
È anche importante monitorare la metrica. LongestRunningGCProcess
CloudWatch Questa metrica, insieme aGCRuntimeStats
, ti aiuta a capire l'efficienza della raccolta dei rifiuti nel tuo sistema.
Per il monitoraggio a livello di raccolta
Concentrati su due metriche chiave. Innanzitutto, ti consigliamo di controllare il MvccIdAgeScale
valore di ogni collezione. L'aumento dei valori indica che gli MVCC IDs stanno invecchiando e potrebbero richiedere attenzione. In secondo luogo, monitorate GCRuntimeStats
per identificare eventuali processi di raccolta dei rifiuti che richiedono insolitamente tempo o si protraggono per più giorni. Le raccolte con operazioni di scrittura frequenti richiedono un'attenzione particolare, poiché generano più lavoro per il garbage collector. Ti consigliamo di controllare più frequentemente queste metriche per le raccolte con un'intensa attività di scrittura per garantire che Garbage Collection stia al passo con il tuo carico di lavoro.
Tieni presente che questi consigli di monitoraggio servono come punto di partenza. Man mano che acquisisci maggiore familiarità con il comportamento del sistema, potresti voler modificare queste soglie per adattarle meglio ai tuoi modelli e requisiti di utilizzo specifici.
Cosa devo fare se il mio valore AvailableMVCCId
scende al di sotto di 1,3 miliardi?
Se la AvailableMVCCId
metrica scende al di sotto di 1,3 miliardi, ti consigliamo di agire immediatamente per impedire al cluster di passare alla modalità di sola lettura. Ti consigliamo innanzitutto di aumentare le dimensioni dell'istanza per fornire al Garbage Collector più risorse di elaborazione. Ciò consente all'applicazione di continuare le normali operazioni fornendo al garbage collector la potenza aggiuntiva di cui ha bisogno per recuperare il ritardo.
Se il solo ridimensionamento non migliora la situazione, consigliamo di prendere in considerazione una riduzione delle operazioni di scrittura. Utilizza la MvccIdAgeScale
metrica per identificare quali raccolte specifiche contengono MVCC meno recenti IDs che richiedono attenzione. Una volta identificate queste raccolte, potrebbe essere necessario ridurre temporaneamente le operazioni di scrittura su di esse per consentire alla garbage collection di recuperare il ritardo. Durante il periodo di recupero, ti consigliamo di monitorare attentamente la AvailableMVCCId
metrica per assicurarti che le tue azioni abbiano l'effetto desiderato. Il cluster viene considerato integro una volta che il AvailableMVCCId
valore torna a 1,5 miliardi o superiore.
Ricorda che questi passaggi sono misure preventive per aiutare il sistema a riprendersi prima che raggiunga uno stato critico. Quanto prima si interviene dopo aver visto la metrica scendere al di sotto di 1,3 miliardi, tanto più è probabile che si eviti qualsiasi impatto sulle operazioni di scrittura.