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
- 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. - 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ò).
- Ritaglia le proiezioni LSI: proietta meno attributi (
KEYS_ONLY/INCLUDE) per rallentare la crescita della raccolta se devi mantenere le LSI. - Archivia gli articoli freddi dalla raccolta caldi in una tabella separata o S3.
- Monitora prima di sbattere contro il muro. Imposta
ReturnItemCollectionMetrics: sizesulle scritture (PutItem,UpdateItem,DeleteItem,BatchWriteItem,TransactWriteItems); DynamoDB restituisce una stimaSizeEstimateRangeGBe 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
- Indici secondari locali (verificato il 13-07-2026)
- PutItem - Riferimento Amazon DynamoDB API (verificato il 13-07-2026)
Errori correlati
- ItemCollectionSizeLimitExceededException — la stessa eccezione, con il framing di capacità generale.
- La dimensione dell'elemento ha superato la dimensione massima consentita: il limite separato di 400 KB per articolo.
- Impara: Raccolte di oggetti · GSI vs LSI · Panoramica degli indici
Riferimenti
- Indici secondari locali: Guida per sviluppatori Amazon DynamoDB
- Gestione degli errori con DynamoDB - Guida per sviluppatori di Amazon DynamoDB
- Quote in Amazon DynamoDB — Guida per sviluppatori Amazon DynamoDB
- PutItem - Riferimento Amazon DynamoDB API
Ultima verifica il 13-07-2026 rispetto alla documentazione ufficiale del AWS collegata sopra.