Como excluir vários itens em DynamoDB
Não há DELETE FROM table WHERE… em DynamoDB. Cada exclusão tem como alvo um
item por sua chave primária completa - o API não tem operação de exclusão em massa, não
truncar eA instrução DELETE remove exatamente um item por
declaração. Portanto, "excluir vários itens" é sempre uma tarefa de duas etapas: encontre o
chaves e emitir uma exclusão por chave, em lote para taxa de transferência.
Este guia aborda as opções de lote, a transação transacional do tipo tudo ou nada variante, o caso de excluir tudo e como fazer a mesma coisa com um seleção e duas teclas em uma GUI.
Como excluo vários itens em DynamoDB?
Colete as chaves primárias dos itens que você deseja eliminar (via Query ou Scan),
em seguida, exclua-os em lotes: BatchWriteItem leva até 25 DeleteRequests
por chamada, TransactWriteItems exclui até 100 itens atomicamente e PartiQL
As instruções DELETE podem ser agrupadas em lote 25 por vez com BatchExecuteStatement.
Em DynoTable você seleciona as linhas e pressiona ⌘⌫ para preparar
as exclusões, revise e confirme.
- Em massa, melhor esforço:
BatchWriteItem— 25 exclusões por chamada, tente novamente as sobras. - Tudo ou nada:
TransactWriteItems— até 100 ações que têm sucesso ou falham juntas. - Sintaxe SQL-ish: PartiQL
DELETE+BatchExecuteStatement— mesma regra por tecla, ortografia familiar. - Tudo na tabela: estratégias de truncar – geralmente mais barato largar e recriar a tabela.
- Uma seleção visual: exclusões escalonadas em DynoTable
- selecione linhas, prepare, revise as diferenças vermelhas, confirme.
Etapa 0: pegue as chaves
Uma exclusão precisa da chave primária inteira — em umtabela que é
a chave de partição e a chave de classificação
(AWS:
"Para cada chave primária, você deve fornecer todos os atributos de chave"). Você
não pode ser excluído por um atributo arbitrário, então "exclua todos os itens onde
status = 'archived'" começa com uma leitura:
- Se a condição reside em uma chave (ou uma chave GSI), um
o
Querydirecionado coleta as chaves de maneira barata. - Caso contrário, é um
Scancom um filtro — que lê (e fatura) o todo tabela, filtro ou não; consulte consulta vs varredura.
Use um ProjectionExpression que retorne apenas os atributos principais e siga
LastEvaluatedKey até o final (pagination) ou você
exclua silenciosamente apenas o valor da primeira página de 1 MB.
Método 1: BatchWriteItem (até 25 exclusões por chamada)
BatchWriteItem agrupa até 25 solicitações de colocação/exclusão ou 16 MB por chamada
(referência AWS API:
"Uma única chamada para BatchWriteItem pode transmitir até 16 MB de dados pelo
rede, consistindo em até 25 operações de colocação ou exclusão de itens").
aws dynamodb batch-write-item --request-items '{
"Orders": [
{"DeleteRequest": {"Key": {"PK": {"S": "ORDER#1001"}, "SK": {"S": "META"}}}},
{"DeleteRequest": {"Key": {"PK": {"S": "ORDER#1002"}, "SK": {"S": "META"}}}},
{"DeleteRequest": {"Key": {"PK": {"S": "ORDER#1003"}, "SK": {"S": "META"}}}}
]
}'Três propriedades do grupo de pessoas - tudo direto do referência API:
- Não atômico: "As operações
PutItemeDeleteItemindividuais especificados emBatchWriteItemsão atômicos; entretantoBatchWriteItemcomo um todo não é." Algumas exclusões podem ocorrer, enquanto outras não. - Você deve tentar novamente
UnprocessedItems. As solicitações limitadas retornam no Mapa de respostaUnprocessedItems, no mesmo formato da solicitação - "Normalmente, você chamariaBatchWriteItemem um loop" e AWS "fortemente recomendamos que você use um algoritmo de espera exponencial" entre novas tentativas. - Sem condições. "Você não pode especificar condições em opções de venda individuais e
solicitações de exclusão" — uma exclusão condicional deve passar por
DeleteItemou um transação em vez disso. Um lote também rejeita duas operações na mesma chave em uma chamada.
O formato do loop - fragmentar por 25, enviar, reenfileirar as sobras com espera - é o mesmo abordado em operações em lote.
Método 2: TransactWriteItems (exclusões atômicas)
Quando um conjunto de exclusões deve ser bem-sucedido ou falhar juntos — removendo um pai
item e seucrianças, digamos - use TransactWriteItems: até
100 ações (exclusões, colocações, atualizações, verificações de condições) aplicadas atomicamente,
com por itempermitido. O comércio: uma transação
custos de gravação o dobro da capacidade de gravação de uma gravação simples. A mecânica completa
(tokens de idempotência, TransactionCanceledException, matemática de custo) estão em
transações DynamoDB.
Método 3: PartiQL DELETE, em lote
PartiQL não elimina a regra por chave - apenas a reescreve. O desenvolvedor
o guia é explícito
(PartiQL DELETE):
"Você só pode excluir um item por vez. Você não pode emitir um único DynamoDB
Instrução PartiQL que exclui vários itens" e a condição WHERE
"deve resolver para um único valor de chave primária".
Para excluir vários itens, você agrupa extratos de item único -
BatchExecuteStatement
executa até 25 instruções por lote (todas as leituras ou todas as gravações, nunca misturadas):
[
{"Statement": "DELETE FROM \"Orders\" WHERE PK = 'ORDER#1001' AND SK = 'META'"},
{"Statement": "DELETE FROM \"Orders\" WHERE PK = 'ORDER#1002' AND SK = 'META'"}
]aws dynamodb batch-execute-statement --statements file://statements.jsonUm WHERE que não fixa a chave completa falha - não há
DELETE FROM Pedidos WHERE status = 'arquivado'. Mais padrões PartiQL (e o
limites por trás deles) em exemplos PartiQL e
PartiQL vs SQL.
Excluindo itens ALL (truncar)
DynamoDB não tem truncado. Suas opções, em ordem de preferência:
- Exclua e recrie a tabela. Exclusão item por item de uma tabela inteira
fatura uma gravação por item;
DeleteTable+CreateTableevita o escrever a fatura inteira. Configurações da tabela — índices, TTL,, modo de capacidade, tags – não volte por conta própria; você os declara novamente em criação (infraestrutura como código torna isso um não evento). - Itens expiram com. Se "excluir tudo mais antigo que X" for realmente o que você deseja, TTL exclui itens expirados no segundo plano sem consumir capacidade de gravação — uma exclusão em massa em câmera lenta isso não custa nada.
- Scan + exclusão em lote (Método 1) quando a tabela deve permanecer ativa e apenas um subconjunto vai - você paga uma leitura por item digitalizado mais uma gravação por item excluído.
Exclua vários itens em DynoTable
O fluxo de seleção e exclusão acima — consultar, coletar chaves, fragmentar, tentar novamente — é exatamente o trabalho pesado que uma GUI deve possuir. Em DynoTable é uma grade seleção:
- Execute ou filtre uma consulta para que as linhas você quer ir embora estão na tela.
- Selecione-os e pressione ⌘⌫ — cada linha selecionada se torna um staged excluir. Nada tocou DynamoDB ainda: as linhas ficam vermelhas na grade e aparecem como cartões revisáveis no painel de teste.
- Revise e Comprometa-se. Os commits são enviados como lotes
TransactWriteItemscom condições de bloqueio otimista - uma exclusão gradual só será concluída se o item ainda existe — e grandes estágios são automaticamente fragmentados para permanecer dentro dos limites de transação de DynamoDB. ⌘⇧⌫ pula a revisão e exclui e confirma a seleção em um acorde.

Você exclui as linhas selecionadas — uma revisão, operação recuperável até a confirmação - não um truncamento cego de tabela completa. Para limpando uma tabela inteira, solte-a e recrie-a (acima).
Se uma exclusão precisar de uma condição escrita à mão (attribute_exists, uma versão
verificar), construa os mapas ConditionExpression + espaço reservado exatos no
DynamoDB Expression Builder e anexe-o
para um DeleteItem ou transação.
FAQ
Posso excluir vários itens em uma chamada DynamoDB?
Sim - até 25 com BatchWriteItem (melhor esforço, tente novamente UnprocessedItems)
ou até 100 atomicamente com TransactWriteItems. Ambos fazem um primário completo
chave por item; nenhum deles aceita uma condição "onde" para selecionar os itens.
Existe um DELETE WHERE em DynamoDB?
Não. Nem o API de baixo nível nem o PartiQL podem excluir por condição - PartiQL's
DELETE requer um WHERE que "resolva [s] para um único valor de chave primária".
Você consulta ou procura as chaves primeiro e depois exclui cada uma delas.
Como excluo todos os itens de uma tabela DynamoDB? Para uma limpeza completa, exclua e recrie a tabela – isso evita pagar uma gravação por item. Para limpeza baseada em idade, use TTL, que exclui itens expirados sem consumir capacidade de gravação. Scan + exclusão em lote é o fallback quando a tabela deve permanecer ativa.
Por que os itens reaparecem após a exclusão do meu lote?
Quase sempre UnprocessedItems não repetidos: um BatchWriteItem limitado
retorna silenciosamente as exclusões com falha na resposta e o código que não
faça um loop sobre eles "termina" com os itens ainda na tabela. Tente novamente com
espera exponencial até que o mapa volte vazio.
Quanto custa a exclusão de itens? Cada exclusão é uma gravação padrão (um WCU por 1 KB, duplicado dentro de um transação) e encontrar as leituras dos custos das chaves também. Estime o dano com a calculadora de preços.
Prefere ver o que você está excluindo primeiro? Baixar DynoTable — selecione as linhas, prepare as exclusões com ⌘⌫, revise as diferenças e comprometa-se quando tiver certeza.


