Iniciante6 min de leitura

Tamanho da tabela DynamoDB e contagem de itens

Não há SELECT COUNT(*) que você possa apontar barato para uma tabela DynamoDB. O DynamoDB oferece duas respostas muito diferentes para "qual o tamanho desta tabela?": a estimativa gratuita que pode durar até seis horas e uma contagem exata isso custa uma leitura completa da tabela. A maioria "por que minha contagem de itens está errada?" confusão é escolher um enquanto espera o comportamento do outro.

Como obtenho a contagem e o tamanho dos itens de uma tabela DynamoDB?

Ligue para DescribeTable: retorna ItemCount e TableSizeBytes gratuitamente, mas "DynamoDB atualiza este valor aproximadamente a cada seis horas. Mudanças recentes pode não estar refletido neste valor" (Referência AWS API). Para um número exato, execute um Scan com --select COUNT – ele retorna apenas a contagem, mas lê (e fatura) cada item. Uma GUI como DynoTable mostra as estimativas em cada tabela e pode calcular contagens exatas on-demand.

Você querUsarCustoFrescura
Contagem aproximada + tamanho, grátisDescribeTablenenhum (chamada de metadados)~6 h obsoleto
Contagem total exataScan com Select COUNTlê a tabela inteiraao vivo
Contagem exata para uma chaveQuery com Select COUNTlê os itens correspondentesao vivo
Contagem de um subconjunto filtradoScan/Query + filtro + CONTAGEMlê tudo digitalizadoao vivo

Método 1: DescribeTable (gratuito, obsoleto em aproximadamente 6 horas)

DescribeTable é uma pesquisa de metadados – não lê itens, portanto não consome capacidade de leitura e carrega os dois números que você procura:

aws dynamodb describe-table --table-name Orders \
  --query 'Table.[ItemCount, TableSizeBytes]'

Ambos vêm com a mesma advertência, literalmente do Referência API: "DynamoDB atualiza esse valor aproximadamente a cada seis horas. Mudanças recentes pode não estar refletido neste valor." Então, uma tabela que você acabou de carregar em massa pode reporte ItemCount: 0 por horas – o número não está errado, é um instantâneo.

A mesma resposta também traz valores por índice: cada GSI e LSI relata seu próprio ItemCount e IndexSizeBytes na mesma cadência de seis horas. Comparar a contagem de itens de um com a da tabela é uma excelente exame de saúde gratuito - informa quantos itens realmente carregam o índice chave.

Método 2: contagem exata com Scan + Select COUNT

Quando "aproximadamente a partir desta manhã" não for bom o suficiente, conte de verdade:

aws dynamodb scan --table-name Orders --select COUNT

Fatos que você deve saber antes de executá-lo, tudo desde o Referência de digitalização API:

  • COUNT "retorna o número de itens correspondentes, em vez dos itens correspondentes próprios itens" — menos tráfego de rede, mas "isso usa o mesmo quantidade de unidades de capacidade de leitura conforme obtenção dos itens". Uma contagem exata de um A tabela de 100 GB é uma leitura de 100 GB na sua conta.
  • Uma única solicitação ainda para em 1 MB de dados verificados; a resposta Count "retorna apenas a contagem de itens específicos para uma única varredura solicitação". A CLI segue o LastEvaluatedKey e soma as páginas para você; em Código SDK que você faz loop e adiciona — consulte paginação.
  • Numa tabela grande, divida o trabalho com uma varredura paralela (--segment / --total-segments) e some as contagens por segmento.

Contando um subconjunto

  • Itens sob uma chave de partição: Query com --select COUNT — lê apenas os itens dessa chave, por isso é tão barato quanto os dados são pequenos. Este é o maneira correta de contar um .
  • Itens que correspondem a um filtro: adicione um FilterExpression — mas lembre-se do a contagem pela qual você é cobrado é ScannedCount, não Count: filtros DynamoDB após a leitura, então "contar os pedidos arquivados" por meio de uma varredura filtrada compensa cada pedido. Um ScannedCount alto próximo a um Count pequeno é a assinatura de um filtro que deseja ser um GSI - veja estratégias de filtragem.

Para perguntas mais ricas – contagens por status, somas, médias – o DynamoDB não tem GROUP BY em absoluto; as soluções alternativas residem em contagem, soma e agregação. (Ou pule o solução alternativa: o SQL Workbench do DynoTable é executado GROUP BY e agrega do lado do cliente.)

Tamanho da tabela e contagem de itens no DynoTable

DynoTable coloca ambas as respostas onde você já está procurando. Cada a tabela aberta possui um botão Estatísticas (o ícone do gráfico de barras) na barra de ferramentas da guia; o painel mostra:

  • Chave primária e índices secundários — resumo do formato da tabela.
  • Itens · Tamanho · Item médio - estimativas DescribeTable do próprio DynamoDB, rotulados como estimativas, com a advertência de seis horas à distância.
  • Tabela de índice — uma varredura de amostragem com um clique que registra os atributos descobertas (incluindo caminhos aninhados como commonData.status), com progresso ao vivo. A varredura é limitada, então atributos raros podem estar faltando; os limites estão ativados Visão geral e indexação da tabela. Ele alimenta o campo preenchimento automático e um inferido Exportação de esquema TypeScript / Zod / JSON, e incorre em custos normais de leitura do DynamoDB – o aplicativo diz isso antecipadamente.
O Diálogo Table no DynoTable: chaves e índices, a linha de estimativa de itens / tamanho / média do item e a lista de campos indexados.
O Diálogo Table no DynoTable: chaves e índices, a linha de estimativa de itens / tamanho / média do item e a lista de campos indexados.

E para os números exatos, o agente AI integrado calcula contagens, somas e detalhamentos por grupo em toda a tabela em solicitação - ele lê todos os itens correspondentes em vez de amostrar uma página, e pergunta antes de executar qualquer coisa que custe capacidade de leitura.

FAQ

Por que a contagem de itens do meu DynamoDB está errada? ItemCount (e TableSizeBytes) são atualizados "aproximadamente a cada seis horas", então escritas e exclusões recentes ainda não são refletidas. Visão geral da tabela do console mostra os mesmos números DescribeTable, com o mesmo atraso.

Como posso contar exatamente as linhas no DynamoDB? aws dynamodb scan --table-name X --select COUNT — a CLI percorre o tabela inteira e soma as contagens por página. É exato, mas fatura a mesma leitura capacidade como buscar todos os itens.

O DescribeTable é gratuito? Não consome capacidade de leitura — é uma chamada de metadados, não uma leitura de dados, portanto polling não afetará o rendimento da sua tabela.Como encontro o tamanho de um item? Medidores DynamoDB por tamanho do item (arredondado por 1 KB escrito / 4 KB lido). Cole um item no calculadora de tamanho do item para ver sua cobrança tamanho e consulte o limite de itens de 400 KB para o teto.

A contagem de itens afeta minha fatura? O armazenamento é cobrado por TableSizeBytes e as solicitações por tamanho de item × solicitação contagem — não por contagem de itens diretamente. Coloque os números da sua tabela no calculadora de preços para ver o valor mensal imagem nos modos on-demand e provisionados.

Quer a forma, as estimativas e os campos indexados da tabela a um clique de distância? Baixe DynoTable e abra o painel de estatísticas em qualquer tabela.

Atualizado