DynamoDB ItemCollectionSizeLimitExceededException

TL;DR — Solo le tabelle con un indice secondario locale (LSI) hanno questo limite: tutti gli elementi che condividono una chiave di partizione (la "raccolta di elementi") possono avere una dimensione massima di 10 GB. Una delle tue chiavi di partizione l'ha attraversata. Riprogettazione in modo che nessuna chiave di partizione singola accumuli dati illimitati o elimina LSI.

Cosa significa

ItemCollectionSizeLimitExceededException: Collection size exceeded.

Una raccolta di elementi è ogni elemento con lo stesso valore della chiave di partizione — nella tabella di base e in tutti i suoi LSI. Le tabelle senza un LSI non hanno un limite di dimensione per raccolta (la dimensione complessiva di una tabella non è vincolata). Le tabelle con un LSI limitano ciascuna raccolta a 10 GB e questo errore significa che una scrittura spingerebbe una raccolta oltre tale limite. Il limite non si applica agli indici secondari globali.

Ritorna come HTTP 400 e AWS lo elenca come OK per riprovare, ma un nuovo tentativo riesce solo quando la raccolta si è ridotta al di sotto dei 10 GB. Le letture e le scritture che riducono le dimensioni della raccolta (eliminazioni, rimozione o taglio di attributi) sono ancora consentite, quindi puoi trovare una via d'uscita.

Perché succede

  • Una chiave di partizione attiva/illimitata: una chiave (un grande inquilino, un utente popolare) accumula molti più elementi di altre.
  • Un LSI potrebbe non essere necessario: il limite di 10 GB esiste solo perché la tabella ha un LSI.
  • Crescita di sola aggiunta con un'unica chiave di partizione nel tempo.

Come risolverlo

  1. Ripartizione della chiave di partizione. Suddividi l'entità di grandi dimensioni su più chiavi di partizione (ad esempio TENANT#42#1, TENANT#42#2) in modo che nessuna singola raccolta diventi illimitata.
  2. Sostituisci LSI con GSI. I GSI hanno una propria chiave di partizione e nessun limite alla dimensione della raccolta di elementi: per la maggior parte dei modelli di accesso un GSI è comunque la scelta migliore (e può essere aggiunto/rimosso dopo la creazione della tabella, a differenza di un LSI).
  3. Archivia gli articoli freddi dalla raccolta caldi (in una tabella separata o S3).
  4. Monitora la dimensione della raccolta prima di sbattere contro il muro. "ReturnItemCollectionMetrics: SIZE" sulle scritture restituisce la dimensione stimata della raccolta in modo da poter avvisare prima che le scritture falliscano.

Individualo in DynoTable

Scopri quali chiavi di partizione contengono il maggior numero di elementi prima che una raccolta raggiunga i 10 GB: apri la tabella con ⌘K, ordina per chiave di partizione ed esegui la scansione delle chiavi con elenchi di elementi insolitamente lunghi. Il calcolatore della dimensione dell'articolo aiuta a stimare la crescita per articolo quando pianifichi un re-shard.

Utilizza il calcolatore dei prezzi per confrontare l'amplificazione di scrittura LSI con un'alternativa GSI. Cambia profilo con ⌘P; configurarli in Impostazioni → Profili. Consulta Connetti a AWS e Installa.

Fonti

Errori correlati

Riferimenti

Ultima verifica il 13-07-2026 rispetto alla documentazione ufficiale del AWS collegata sopra.

Lavora con DynamoDB senza la Console

Un client desktop veloce per DynamoDB che esegue il vero SQL che DynamoDB non può — JOINs, GROUP BY, aggregazioni — con modifica visuale e un agente AI sulle tue chiavi Bedrock.

Prova gratuita di 30 giorni, senza carta di credito — poi il piano Free senza limiti di tempo.