DynamoDB LSI limite de 10 GB para coleção de itens

TL;DR — Em uma tabela com índice secundário local, uma coleção de itens — cada item que compartilha uma chave de partição, mais suas projeções LSI — pode totalizar no máximo 10 GB. Somente tabelas LSI possuem esse limite, pois cada coleção de itens deve caber em uma única partição. Uma gravação que levaria uma coleção além de 10 GB falha com ItemCollectionSizeLimitExceededException. Monitore ItemCollectionMetrics, fragmente novamente a chave crescente ou substitua o LSI por um GSI (que não tem esse limite).

O que significa

ItemCollectionSizeLimitExceededException: Collection size exceeded.

Uma coleção de itens é o conjunto de todos os itens com o mesmo valor de chave de partição na tabela e todos os seus LSIs. Quando uma tabela tem um LSI, o DynamoDB armazena cada coleção de itens em uma única partição, portanto a coleção é limitada pela capacidade de 10 GB dessa partição. Uma tabela sem um LSI não tem limite de tamanho por coleção (e os GSIs também não têm nenhum). Portanto, este erro é um sinal de que os dados de uma chave de partição cresceram ilimitadamente em um LSI. É um HTTP 400; AWS lista-o como passível de nova tentativa, mas uma nova tentativa só é bem-sucedida depois que a coleção diminui – leituras e escritas para redução de tamanho (exclusões, corte de atributos) ainda são permitidas.

Por que isso acontece

  • Uma chave de partição ilimitada — um grande inquilino, um usuário ocupado ou um log somente anexado, tudo escrito em uma chave.
  • O próprio LSI — o limite de 10 GB existe apenas porque a tabela possui um LSI (criado no momento da criação da tabela e não removível).
  • Projeções amplas do LSI — projetar muitos atributos no LSI aumenta a coleção mais rapidamente.
  • Crescimento constante que se aproximou silenciosamente de 10 GB até que uma gravação finalmente o ultrapassou.

Como corrigir

  1. Fragmentar novamente a chave de partição. Divida a entidade superdimensionada em várias chaves (TENANT#42#1, TENANT#42#2,…) para que nenhuma coleção única cresça sem limites.
  2. Substitua o LSI por um GSI. Os GSIs têm sua própria chave de partição e não limite de tamanho de coleção de itens — para a maioria dos padrões de acesso, um GSI é a melhor opção e pode ser adicionado ao /removed após a criação da tabela (um LSI não pode).
  3. Corte as projeções do LSI — projete menos atributos (KEYS_ONLY/INCLUDE) para retardar o crescimento da coleção se você precisar manter o LSI.
  4. Arquive itens frios da coleção quente em uma tabela separada ou S3.
  5. Monitore antes de bater na parede. Defina ReturnItemCollectionMetrics: SIZE em escritas (PutItem, UpdateItem, DeleteItem, BatchWriteItem, TransactWriteItems); O DynamoDB retorna uma estimativa de SizeEstimateRangeGB e o AWS recomenda alertar em um limite definido pelo usuário (8 GB, por exemplo) para que você atue antes de 10 GB.

Pelo DynoTable

Encontre a chave de partição próxima a 10 GB — abra a tabela com ⌘K, classifique por chave de partição e conte os itens por coleção. A calculadora de tamanho de item estima o crescimento quando as projeções amplas do LSI aumentam as coleções.

Compare o custo de gravação do LSI com uma migração do GSI com a calculadora de preços. Alternar perfis com ⌘P; consulte Conectar ao AWS e Instalar.

Fontes

Erros relacionados

Referências

Última verificação em 13/07/2026 em relação à documentação oficial do AWS vinculada acima.

Trabalhe com o DynamoDB sem o Console

Um cliente desktop rápido para DynamoDB que roda o SQL de verdade que o DynamoDB não consegue — JOINs, GROUP BY, agregações — com edição visual e um agente de IA com suas próprias chaves do Bedrock.

Teste grátis de 30 dias, sem cartão de crédito — depois o plano Grátis sem limite de tempo.