Mehrere Items in DynamoDB löschen
Es gibt kein DELETE FROM table WHERE … in DynamoDB. Jeder Delete trifft ein
Item über den vollständigen Primärschlüssel — die API hat keine Bulk-Delete-
Operation, kein Truncate, und s DELETE entfernt genau ein Item
pro Statement. „Mehrere Items löschen“ ist also immer ein Zwei-Schritt-Job:
Keys finden, dann einen Delete pro Key, gebündelt für Throughput.
Dieser Guide deckt die Batch-Optionen ab, die atomare Transaktionsvariante, den Alles-löschen-Fall und denselben Flow mit Auswahl und zwei Tasten in einer GUI.
Wie lösche ich mehrere Items in DynamoDB?
Sammle die Primärschlüssel der Items, die weg sollen (per Query oder Scan),
und lösche sie in Batches: BatchWriteItem nimmt bis zu 25 DeleteRequests
pro Aufruf, TransactWriteItems löscht bis zu 100 Items atomar, und PartiQL-
DELETE-Statements lassen sich mit BatchExecuteStatement zu 25 bündeln.
In DynoTable markierst du die Zeilen und drückst ⌘⌫,
um die Deletes zu stagen — dann reviewen und committen.
- Bulk, best-effort:
BatchWriteItem— 25 Deletes pro Aufruf, Reste retryen. - Alles-oder-nichts:
TransactWriteItems— bis zu 100 Aktionen, die gemeinsam gelingen oder scheitern. - SQL-ähnliche Syntax: PartiQL
DELETE+BatchExecuteStatement— dieselbe Per-Key-Regel, vertraute Schreibweise. - Alles in der Tabelle: Truncate-Strategien — meist günstiger, die Tabelle zu droppen und neu anzulegen.
- Visuelle Auswahl: Gestagte Deletes in DynoTable — Zeilen wählen, stagen, rote Diffs prüfen, committen.
Schritt 0: Keys sammeln
Ein Delete braucht den gesamten Primärschlüssel — bei einer
-Tabelle Partition Key und Sort Key
(AWS:
„For each primary key, you must provide all of the key attributes“). Du
kannst nicht nach einem beliebigen Attribut löschen — „jedes Item mit
status = 'archived' löschen“ beginnt also mit einem Read:
- Liegt die Bedingung auf einem Key (oder einem GSI-Key),
sammelt eine gezielte
Querydie Keys günstig. - Sonst ist es ein
Scanmit Filter — der liest (und berechnet) die ganze Tabelle, Filter hin oder her; siehe Query vs Scan.
Nutze eine ProjectionExpression, die nur die Key-Attribute zurückgibt, und
folge LastEvaluatedKey bis zum Ende (Pagination) —
sonst löschst du stillschweigend nur die erste 1‑MB-Seite.
Methode 1: BatchWriteItem (bis zu 25 Deletes pro Aufruf)
BatchWriteItem bündelt bis zu 25 Put/Delete-Requests oder 16 MB pro
Aufruf
(AWS API reference).
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"}}}}
]
}'Drei Eigenschaften des Batches stolpern Leute — alle direkt aus der API reference:
- Nicht atomar: einzelne
PutItem/DeleteItem-Ops sind atomar; der Batch als Ganzes nicht. Manche Deletes landen, andere nicht. UnprocessedItemsmusst du retryen. Gedrosselte Requests kommen in derUnprocessedItems-Map zurück — AWS empfiehlt exponential Backoff in einer Loop.- Keine Conditions. Konditionale Deletes brauchen
DeleteItemoder eine Transaktion. Ein Batch lehnt außerdem zwei Ops auf dem gleichen Key ab.
Die Loop-Form steht in Batch Operations.
Methode 2: TransactWriteItems (atomare Deletes)
Wenn Deletes gemeinsam gelingen oder scheitern müssen — Parent plus
-Kinder — nutze TransactWriteItems: bis zu
100 Aktionen atomar, mit pro
Item. Trade: transactional Write kostet doppelt. Details in
DynamoDB Transactions.
Methode 3: PartiQL DELETE, gebündelt
PartiQL hebt die Per-Key-Regel nicht auf
(PartiQL DELETE):
„You can only delete one item at a time…“, und WHERE „must resolve to a single
primary key value“.
Batch single-item Statements mit
BatchExecuteStatement
— bis zu 25 pro Batch (alle Reads oder alle Writes):
[
{"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.jsonEs gibt kein DELETE FROM Orders WHERE status = 'archived'. Mehr in
PartiQL Examples und
PartiQL vs SQL.
Alle Items löschen (Truncate)
DynamoDB hat kein Truncate. Optionen:
- Tabelle löschen und neu anlegen — umgeht einen Write pro Item. Settings (Indexes, TTL, , Capacity, Tags) neu deklarieren.
- — altersbasiertes Cleanup ohne Write Capacity (TTL).
- Scan + Batch-Delete (Methode 1), wenn die Tabelle live bleiben muss.
Mehrere Items in DynoTable löschen
In DynoTable:
- Query ausführen oder filtern, bis die Zeilen auf dem Screen sind.
- Markieren und ⌘⌫ — jede Zeile wird ein gestagter Delete. Noch nichts in DynamoDB: Zeilen rot im Grid, Cards im Staging-Panel.
- Prüfen, dann Commit. Commits als
TransactWriteItemsmit Optimistic-Locking; große Stages werden gechunkt. ⌘⇧⌫ skippt Review.

Du löschst die markierten Zeilen — geprüft, bis Commit rücknehmbar — kein blindes Truncate. Handgeschriebene Conditions: im Expression Builder bauen.
FAQ
Kann ich mehrere Items in einem Aufruf löschen?
Ja — bis zu 25 mit BatchWriteItem (best-effort, UnprocessedItems retryen)
oder bis zu 100 atomar mit TransactWriteItems. Beide brauchen den vollen
Primärschlüssel pro Item.
Gibt es ein DELETE WHERE? Nein. Weder Low-Level-API noch PartiQL. Zuerst Keys lesen, dann löschen.
Alle Items einer Tabelle? Full Wipe: droppen und neu anlegen. Altersbasiert: TTL. Sonst Scan + Batch-Delete.
Warum tauchen Items nach dem Batch-Delete wieder auf?
Meist nicht-retryte UnprocessedItems. Mit exponential Backoff looped bis die
Map leer ist.
Was kostet Löschen? Jeder Delete ist ein Write (WCU pro 1 KB, verdoppelt in Transaktionen); Keys finden kostet Reads. Abschätzen mit dem Pricing Calculator.
DynoTable herunterladen — Zeilen markieren, mit ⌘⌫ stagen, Diffs prüfen, committen.


