Tabellengröße und Item-Anzahl in DynamoDB
Es gibt kein SELECT COUNT(*), das du günstig auf eine DynamoDB-Tabelle richten kannst.
DynamoDB gibt dir zwei sehr verschiedene Antworten auf „wie groß ist diese Tabelle?“: eine
kostenlose Schätzung, die bis zu sechs Stunden alt sein kann, und eine exakte Zahl,
die einen vollständigen Lesevorgang der Tabelle kostet. Die meiste Verwirrung nach dem Muster „warum stimmt meine
Item-Anzahl nicht?“ entsteht daraus, das eine zu wählen und das Verhalten des anderen zu erwarten.
Wie bekomme ich Item-Anzahl und Größe einer DynamoDB-Tabelle?
Ruf DescribeTable auf: Es liefert ItemCount und TableSizeBytes kostenlos, aber laut AWS gilt
"DynamoDB updates this value approximately every six hours. Recent changes
might not be reflected in this value"
(AWS API-Referenz).
Für eine exakte Zahl führst du einen Scan mit --select COUNT aus — er gibt nur
die Anzahl zurück, liest (und berechnet) aber jedes Item. Eine GUI wie
DynoTable zeigt die Schätzungen an jeder Tabelle und kann auf Wunsch
exakte Zahlen ermitteln.
| Du willst | Nimm | Kosten | Aktualität |
|---|---|---|---|
| Ungefähre Anzahl + Größe, kostenlos | DescribeTable | keine (Metadaten-Aufruf) | ~6 h veraltet |
| Exakte Gesamtanzahl | Scan mit Select COUNT | liest die ganze Tabelle | live |
| Exakte Anzahl für einen Key | Query mit Select COUNT | liest die passenden Items | live |
| Anzahl einer gefilterten Teilmenge | Scan/Query + Filter + COUNT | liest alles Gescannte | live |
Methode 1: DescribeTable (kostenlos, ~6 h veraltet)
DescribeTable ist ein Metadaten-Lookup — es liest keine Items, verbraucht also keine
Lesekapazität und trägt die beiden Zahlen, die du suchst:
aws dynamodb describe-table --table-name Orders \
--query 'Table.[ItemCount, TableSizeBytes]'Für beide gilt derselbe Vorbehalt, wörtlich aus der
API-Referenz:
"DynamoDB updates this value approximately every six hours. Recent changes
might not be reflected in this value." Eine Tabelle, die du gerade massenhaft befüllt hast, kann also
stundenlang ItemCount: 0 melden — die Zahl ist nicht falsch, sie ist eine Momentaufnahme.
Dieselbe Antwort trägt außerdem Zahlen pro Index: Jede GSI und LSI
meldet ihre eigenen ItemCount und IndexSizeBytes im selben Sechs-Stunden-Takt.
Die Item-Anzahl eines mit der der Tabelle zu vergleichen, ist ein
netter kostenloser Gesundheitscheck — er sagt dir, wie viele Items den Index-Key
tatsächlich tragen.
Methode 2: exakte Anzahl mit Scan + Select COUNT
Wenn „ungefähr, Stand heute Morgen“ nicht reicht, zähle richtig:
aws dynamodb scan --table-name Orders --select COUNTWas du vor dem Ausführen wissen solltest, alles aus der Scan-API-Referenz:
COUNT"returns the number of matching items, rather than the matching items themselves" — weniger Netzwerkverkehr, aber "this uses the same quantity of read capacity units as getting the items". Eine exakte Zählung einer 100-GB-Tabelle ist ein 100-GB-Lesevorgang auf deiner Rechnung.- Eine einzelne Anfrage stoppt weiterhin bei 1 MB gescannter Daten; das
Countder Antwort "only return[s] the count of items specific to a single scan request". Die CLI folgtLastEvaluatedKeyund summiert die Seiten für dich; im SDK-Code schleifst und addierst du — siehe Paginierung. - Bei einer großen Tabelle teilst du die Arbeit mit einem
parallelen Scan (
--segment/--total-segments) auf und summierst die Anzahlen je Segment.
Eine Teilmenge zählen
- Items unter einem Partition Key:
Querymit--select COUNT— liest nur die Items dieses Keys und ist damit so günstig, wie die Daten klein sind. So zählt man eine richtig. - Items, die auf einen Filter passen: ergänze eine
FilterExpression— aber denk daran, dass abgerechnet wird, was inScannedCountsteht, nicht inCount: DynamoDB filtert nach dem Lesen, „zähl die archivierten Bestellungen“ über einen gefilterten Scan bezahlt also jede Bestellung. Ein hoherScannedCountneben einem kleinenCountist die Signatur eines Filters, der eine GSI sein will — siehe Filterstrategien.
Für reichhaltigere Fragen — Anzahlen je Status, Summen, Durchschnitte — hat DynamoDB gar kein
GROUP BY; die Umwege stehen in
Zählen, Summieren & Aggregieren. (Oder spar dir den
Umweg: Der SQL Workbench von DynoTable führt
GROUP BY und Aggregate clientseitig aus.)
Tabellengröße und Item-Anzahl in DynoTable
DynoTable legt dir beide Antworten dorthin, wo du ohnehin hinschaust. Jede offene Tabelle hat in der Tab-Toolbar eine Einstellungen-Schaltfläche; der Dialog, den sie öffnet, zeigt:
- Primärschlüssel und Secondary Indexes — die Form der Tabelle auf einen Blick.
- Items · Größe · Ø Item — die
DescribeTable-Schätzungen von DynamoDB selbst, als Schätzungen ausgewiesen, mit dem Sechs-Stunden-Vorbehalt einen Hover entfernt. - Tabelle indizieren — unter Indexierung, ein Sampling-Scan per Klick, der die gefundenen Attribute erfasst
(inklusive verschachtelter Pfade wie
commonData.status), mit Live-Fortschritt. Der Scan ist gedeckelt, seltene Attribute können also fehlen; die Grenzen stehen unter Tabellenübersicht und -indexierung. Er speist die Feld-Autovervollständigung und einen abgeleiteten TypeScript-/Zod-/JSON-Schema-Export, und er verursacht normale DynamoDB-Lesekosten — die App sagt das vorab.

Und für die exakten Zahlen berechnet der eingebaute KI-Agent auf Anfrage Anzahlen, Summen und Aufschlüsselungen je Gruppe über die gesamte Tabelle — er liest jedes passende Item, statt eine Seite zu sampeln, und er fragt nach, bevor er etwas ausführt, das Lesekapazität kostet.
FAQ
Warum stimmt meine DynamoDB-Item-Anzahl nicht?
ItemCount (und TableSizeBytes) aktualisieren sich „ungefähr alle sechs Stunden“, kürzlich
erfolgte Schreib- und Löschvorgänge sind also noch nicht enthalten. Die Tabellenübersicht der Konsole
zeigt dieselben DescribeTable-Zahlen mit derselben Verzögerung.
Wie zähle ich Zeilen in DynamoDB exakt?
aws dynamodb scan --table-name X --select COUNT — die CLI blättert durch die
ganze Tabelle und summiert die Anzahlen je Seite. Das ist exakt, kostet aber dieselbe Lesekapazität
wie das Holen jedes Items.
Ist DescribeTable kostenlos? Es verbraucht keine Lesekapazität — es ist ein Metadaten-Aufruf, kein Datenlesevorgang, ein Polling rührt den Durchsatz deiner Tabelle also nicht an.
Wie finde ich die Größe eines einzelnen Items heraus? DynamoDB misst nach Item-Größe (aufgerundet je 1 KB geschrieben / 4 KB gelesen). Füge ein Item in den Item-Size-Rechner ein, um seine abgerechnete Größe zu sehen, und schau für die Obergrenze in das 400-KB-Item-Limit.
Beeinflusst die Item-Anzahl meine Rechnung?
Speicher wird nach TableSizeBytes abgerechnet und Anfragen nach Item-Größe × Anzahl der
Anfragen — nicht direkt nach Item-Anzahl. Gib die Zahlen deiner Tabelle in den
Preisrechner ein, um das monatliche
Bild über On-Demand und Provisioned zu sehen.
Du willst Form, Schätzungen und indizierte Felder deiner Tabelle einen Klick entfernt haben? Lade DynoTable herunter und öffne den Tabellen-Dialog an einer beliebigen Tabelle.


