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à.
Manutenzione degli indici
Index bloat
Amazon DocumentDB utilizza Multi-Version Concurrency Control (MVCC) per gestire le transazioni simultanee. Quando i documenti vengono eliminati o aggiornati, le versioni precedenti rimangono nelle raccolte e negli indici come versioni «morte». Il processo di garbage collection recupera automaticamente lo spazio da queste versioni obsolete per operazioni future.
L'ingrandimento dell'indice si verifica quando gli indici di una raccolta diventano più grandi a causa dell'accumulo di voci di indice morte o obsolete o della frammentazione all'interno delle pagine. La percentuale riportata rappresenta la quantità di spazio nell'indice che può essere utilizzata dalle voci future dell'indice. Questo ingrossamento consuma spazio sia nella cache del buffer che nella memoria. Se desideri rimuovere il gonfiore, dovrai ricostruire gli indici.
Esempio: esegui il comando seguente per determinare lo spazio di archiviazione inutilizzato per il tuo indice:
db.coll.aggregate({$indexStats:{}});
Il risultato è simile a questo:
{ "name" : "_id_", "key" : { "_id" : 1 }, "host" : "devbox-test.localhost.a2z.com:27317", "size" : NumberLong(827392), "accesses" : { "ops" : NumberLong(40000), "docsRead" : NumberLong(46049), "since" : ISODate("2025-04-03T21:44:51.251Z") }, "cacheStats" : { "blksRead" : NumberLong(264), "blksHit" : NumberLong(140190), "hitRatio" : 99.8121 }, "unusedStorageSize" : { "unusedSizeBytes" : 409600, "unusedSizePercent" : 49.51 } }
È possibile ricostruire gli indici senza tempi di inattività utilizzando il comando ReIndex, che richiede una scansione dell'intera raccolta. Vedi Manutenzione dell'indice utilizzando reIndex.
Manutenzione dell'indice tramite reIndex
ReIndex è un comando utilizzato per ricostruire un indice. Viene in genere utilizzato quando un indice è danneggiato o inefficiente. Nel tempo, gli indici possono accumulare spazio inutilizzato a causa di numerosi aggiornamenti, inserimenti o eliminazioni, con conseguente riduzione delle prestazioni. La reindicizzazione aiuta a rimuovere lo spazio inutilizzato e a ripristinare l'efficienza dell'indice.
Linee guida ReIndex
ReIndex è supportato solo su Amazon DocumentDB 5.0 e versioni successive
ReIndex viene sempre eseguito in background.
Amazon DocumentDB supporta la reindicizzazione di un singolo indice in background, consentendo l'utilizzo di più lavoratori. Il vecchio indice è utilizzabile tramite query quando il processo reIndex è in esecuzione.
Amazon DocumentDB supporta l'indicizzazione del rapporto sullo stato di avanzamento tramite CurrentOp. Puoi visualizzare fasi di creazione dell'indice simili alle fasi di creazione dell'indice visualizzate durante la creazione dell'indice. L'unica differenza è che reIndex ha sempre otto fasi, indipendentemente dal fatto che sia unico o meno. Non esiste una fase «building index: sorting keys 2".
ReIndex può essere eseguito contemporaneamente a qualsiasi comando ad eccezione dei comandi relativi all'indice sulla stessa raccolta: createIndexes, DropIndexes, CollMod e RenameCollection.
ReIndex non è attualmente supportato per gli indici di testo, geospaziali, vettoriali e parziali.
compilazione ReIndex
Usa il seguente comando per ricostruire il tuo indice:
db.runCommand({ reIndex: "collection-name", index: "index-name"})
Facoltativamente, puoi anche controllare il numero di lavoratori assegnati al processo di ricostruzione:
db.runCommand({ reIndex: "collection-name", index: "index-name", workers: number })
Per informazioni specifiche sulla gestione degli indici con Java, vedere. Gestione degli indici in Amazon DocumentDB con Java