Wie man Größe und Item-Anzahl einer DynamoDB-Tabelle ermittelt
Es gibt kein SELECT COUNT(*), das du günstig auf eine DynamoDB-Tabelle
richten kannst. DynamoDB gibt dir zwei sehr unterschiedliche Antworten auf
„Wie groß ist diese Tabelle?": einen kostenlosen Schätzwert, der bis zu
sechs Stunden veraltet sein kann, und eine exakte Zählung, die einen
vollständigen Lesevorgang der Tabelle kostet. Die meiste Verwirrung à la
„Warum stimmt meine Item-Anzahl nicht?" kommt daher, dass man das eine wählt
und das Verhalten des anderen erwartet.
Wie bekomme ich Item-Anzahl und Größe einer DynamoDB-Tabelle?
Rufe DescribeTable auf: Es liefert ItemCount und TableSizeBytes
kostenlos, aber „DynamoDB aktualisiert diesen Wert ungefähr alle sechs
Stunden. Kürzliche Änderungen spiegeln sich in diesem Wert möglicherweise
noch nicht wider"
(AWS-API-Referenz).
Für eine exakte Zahl führe einen Scan mit --select COUNT aus — er
liefert nur die Anzahl, liest (und berechnet) aber jedes Item. Eine GUI wie
DynoTable zeigt die Schätzwerte an jeder Tabelle und kann exakte
Zählungen auf Abruf berechnen.
| Du willst | Nutze | Kosten | Aktualität |
|---|---|---|---|
| Grobe 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 Schlüssel | 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, hinter denen du her
bist:
aws dynamodb describe-table --table-name Orders \
--query 'Table.[ItemCount, TableSizeBytes]'Beide kommen mit demselben Vorbehalt, wörtlich aus der
API-Referenz:
„DynamoDB aktualisiert diesen Wert ungefähr alle sechs Stunden. Kürzliche
Änderungen spiegeln sich in diesem Wert möglicherweise noch nicht wider."
Eine Tabelle, die du gerade per Bulk-Load befüllt hast, kann also stundenlang
ItemCount: 0 melden — die Zahl ist nicht falsch, sie ist ein Snapshot.
Dieselbe Antwort trägt auch Pro-Index-Zahlen: Jeder GSI und LSI
meldet sein eigenes ItemCount und IndexSizeBytes im selben
Sechs-Stunden-Takt. Die Item-Anzahl eines mit
der der Tabelle zu vergleichen ist ein netter kostenloser Gesundheitscheck —
er verrät dir, wie viele Items den Indexschlüssel tatsächlich tragen.
Methode 2: exakte Zählung mit Scan + Select COUNT
Wenn „ungefähr, Stand heute Morgen" nicht gut genug ist, zähle wirklich:
aws dynamodb scan --table-name Orders --select COUNTFakten, die du kennen solltest, bevor du ihn ausführst, alle aus der Scan-API-Referenz:
COUNT„liefert die Anzahl der passenden Items statt der passenden Items selbst" — weniger Netzwerkverkehr, aber „das verbraucht dieselbe Menge an Lesekapazitätseinheiten wie das Abrufen der Items". Eine exakte Zählung einer 100-GB-Tabelle ist ein 100-GB-Lesevorgang auf deiner Rechnung.- Ein einzelner Request stoppt weiterhin bei 1 MB gescannter Daten; das
Countder Antwort „liefert nur die Item-Anzahl eines einzelnen Scan-Requests". Die CLI folgtLastEvaluatedKeyund summiert die Seiten für dich; in SDK-Code schleifst und addierst du selbst — siehe Paginierung. - Auf einer großen Tabelle teile die Arbeit mit einem
parallelen Scan (
--segment/--total-segments) auf und summiere die Zählungen pro Segment.
Eine Teilmenge zählen
- Items unter einem Partition Key:
Querymit--select COUNT— liest nur die Items dieses Schlüssels, ist also so günstig, wie die Daten klein sind. Das ist der richtige Weg, eine zu zählen. - Items, die einem Filter entsprechen: füge eine
FilterExpressionhinzu — aber denk daran, dass dirScannedCountberechnet wird, nichtCount: DynamoDB filtert nach dem Lesen, sodass „zähle die archivierten Bestellungen" per gefiltertem Scan für jede Bestellung zahlt. Ein hoherScannedCountneben einem kleinenCountist die Signatur eines Filters, der ein GSI sein will — siehe Filterstrategien.
Für reichere Fragen — Anzahl pro Status, Summen, Durchschnitte — hat DynamoDB
überhaupt kein GROUP BY; die Workarounds stehen in
Count, Sum & Aggregate.
Tabellengröße und Item-Anzahl in DynoTable
DynoTable legt beide Antworten dorthin, wo du ohnehin hinschaust. Jede offene Tabelle hat einen Stats-Button (das Balkendiagramm-Icon) in der Tab-Toolbar; das Panel zeigt:
- Primary Key und Sekundärindizes — die Form der Tabelle auf einen Blick.
- Items · Größe · Ø Item — DynamoDBs eigene
DescribeTable-Schätzwerte, als Schätzwerte gekennzeichnet, mit dem Sechs-Stunden-Vorbehalt einen Hover entfernt. - Index table — ein Ein-Klick-Sampling-Scan, der jedes Attribut
entdeckt, das deine Items tatsächlich tragen (einschließlich
verschachtelter Pfade wie
commonData.status), mit Live-Fortschritt. Er speist die Feld-Autovervollständigung und einen inferierten 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-Assistent auf Wunsch Zählungen, Summen und Aufschlüsselungen pro Gruppe über die gesamte Tabelle — er liest jedes passende Item, statt eine Seite zu sampeln, und fragt nach, bevor er irgendetwas ausführt, das Lesekapazität kostet.
FAQ
Warum ist meine DynamoDB-Item-Anzahl falsch?
Sie ist nicht falsch — sie ist veraltet. ItemCount (und TableSizeBytes)
werden „ungefähr alle sechs Stunden" aktualisiert, sodass sich frische
Schreib- und Löschvorgänge noch nicht widerspiegeln. 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 Zählungen pro Seite. Das ist exakt,
berechnet aber dieselbe Lesekapazität wie das Abrufen jedes Items.
Ist DescribeTable kostenlos? Es verbraucht keine Lesekapazität — es ist ein Metadaten-Aufruf, kein Daten-Lesevorgang; es zu pollen tastet den Durchsatz deiner Tabelle also nicht an.
Wie finde ich die Größe eines einzelnen Items heraus? DynamoDB rechnet nach Item-Größe ab (aufgerundet pro 1 KB geschrieben / 4 KB gelesen). Füge ein Item in den Item-Größen-Rechner ein, um seine abgerechnete Größe zu sehen, und siehe das 400-KB-Item-Limit für die Obergrenze.
Beeinflusst die Item-Anzahl meine Rechnung?
Speicher wird nach TableSizeBytes abgerechnet und Requests nach Item-Größe
× Request-Anzahl — nicht direkt nach Item-Anzahl. Gib die Zahlen deiner
Tabelle in den Preisrechner ein, um
das Monatsbild über On-Demand- und provisionierte Modi zu sehen.
Willst du Form, Schätzwerte und indizierte Felder der Tabelle einen Klick entfernt? Lade DynoTable herunter und öffne das Stats-Panel an jeder Tabelle.


