DynamoDB LSI limite di 10 GB per la raccolta di articoli

TL;DR — Su una tabella con un Local Secondary Index, una raccolta di elementi (ogni elemento che condivide una chiave di partizione, più le relative LSI proiezioni) può ammontare a un massimo di 10 GB. Solo LSI tabelle hanno questo limite, perché ogni raccolta di elementi deve rientrare in una singola partizione. Una scrittura che spingerebbe una raccolta oltre i 10 GB fallisce con "ItemCollectionSizeLimitExceededException". Monitora "ItemCollectionMetrics", riorganizza la chiave in crescita o sostituisci LSI con GSI (che non ha tale limite).

Cosa significa

ItemCollectionSizeLimitExceededException: Collection size exceeded.

Una raccolta di elementi è l'insieme di tutti gli elementi con lo stesso valore di chiave di partizione nella tabella e tutti i relativi LSI. Quando una tabella ha un LSI, DynamoDB memorizza ogni raccolta di elementi su una singola partizione, quindi la raccolta è limitata dalla capacità di 10 GB di quella partizione. Una tabella senza un LSI non ha limiti di dimensione per raccolta (e nemmeno i GSI ne hanno). Quindi questo errore è un segnale che i dati di una chiave di partizione sono cresciuti senza limiti sotto un LSI. È un HTTP 400; AWS lo elenca come riprovabile, ma un nuovo tentativo riesce solo dopo che la raccolta si è ridotta: sono ancora consentite letture e scritture per ridurre le dimensioni (eliminazioni, taglio di attributi).

Perché succede

  • Una chiave di partizione illimitata: un grande tenant, un utente impegnato o un log di sola aggiunta che scrive tutti sotto un'unica chiave.
  • Il LSI stesso — il limite di 10 GB esiste solo perché la tabella ha un LSI (creato al momento della creazione della tabella e non rimovibile).
  • Ampie proiezioni LSI: proiettare molti attributi nelle LSI gonfia la raccolta più velocemente.
  • Crescita costante che si è avvicinata silenziosamente ai 10 GB fino a quando una scrittura non ha finalmente superato il limite.

Come risolverlo

  1. Ripartizione della chiave di partizione. Suddividi l'entità di grandi dimensioni su più chiavi (TENANT#42#1, TENANT#42#2, ...) in modo che nessuna singola raccolta cresca senza limiti.
  2. Sostituisci LSI con GSI. I GSI hanno una propria chiave di partizione e nessun limite per le dimensioni della raccolta di elementi: per la maggior parte dei modelli di accesso un GSI è la soluzione migliore e può essere aggiunto/rimosso dopo la creazione della tabella (un LSI non può).
  3. Ritaglia le proiezioni LSI: proietta meno attributi (KEYS_ONLY/INCLUDE) per rallentare la crescita della raccolta se devi mantenere le LSI.
  4. Archivia gli articoli freddi dalla raccolta caldi in una tabella separata o S3.
  5. Monitora prima di sbattere contro il muro. Imposta ReturnItemCollectionMetrics: size sulle scritture (PutItem, UpdateItem, DeleteItem, BatchWriteItem, TransactWriteItems); DynamoDB restituisce una stima SizeEstimateRangeGB e AWS consiglia di avvisare a una soglia definita dall'utente (8 GB, ad esempio) in modo da agire prima dei 10 GB.

Da DynoTable

Trova la chiave di partizione che si avvicina a 10 GB: apri la tabella con ⌘K, ordina per chiave di partizione e conta gli elementi per raccolta. Il calcolatore della dimensione dell'articolo stima la crescita quando ampie proiezioni LSI gonfiano le collezioni.

Confronta il costo di scrittura di LSI con una migrazione di GSI con il calcolatore dei prezzi. Cambia profilo con ⌘P; vedere 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.