Comment obtenir la taille et le nombre d'items d'une table DynamoDB
Il n'y a pas de SELECT COUNT(*) que tu puisses pointer à peu de frais sur une
table DynamoDB. DynamoDB te donne deux réponses très différentes à « quelle est la
taille de cette table ? » : une estimation gratuite qui peut dater de six
heures, et un comptage exact qui coûte une lecture complète de la table. La
plupart des confusions « pourquoi mon nombre d'items est-il faux ? » viennent de
choisir l'une en attendant le comportement de l'autre.
Comment obtenir le nombre d'items et la taille d'une table DynamoDB ?
Appelle DescribeTable : il renvoie ItemCount et TableSizeBytes gratuitement,
mais « DynamoDB met à jour cette valeur approximativement toutes les six heures.
Les changements récents peuvent ne pas y être reflétés »
(référence de l'API AWS).
Pour un nombre exact, lance un Scan avec --select COUNT — il ne renvoie que
le comptage, mais lit (et facture) chaque item. Une GUI comme
DynoTable affiche les estimations sur chaque table et peut calculer
des comptages exacts à la demande.
| Tu veux | Utilise | Coût | Fraîcheur |
|---|---|---|---|
| Ordre de grandeur + taille, gratuit | DescribeTable | aucun (appel de métadonnées) | ~6 h de retard |
| Comptage total exact | Scan avec Select COUNT | lit toute la table | en direct |
| Comptage exact pour une clé | Query avec Select COUNT | lit les items correspondants | en direct |
| Comptage d'un sous-ensemble filtré | Scan/Query + filtre + COUNT | lit tout ce qui est scanné | en direct |
Méthode 1 : DescribeTable (gratuit, ~6 h de retard)
DescribeTable est une consultation de métadonnées — il ne lit aucun item, donc ne
consomme aucune capacité de lecture, et il porte les deux nombres que tu cherches :
aws dynamodb describe-table --table-name Orders \
--query 'Table.[ItemCount, TableSizeBytes]'Les deux viennent avec la même mise en garde, mot pour mot dans la
référence de l'API :
« DynamoDB met à jour cette valeur approximativement toutes les six heures. Les
changements récents peuvent ne pas y être reflétés. » Donc une table que tu viens
de charger en masse peut afficher ItemCount: 0 pendant des heures — le nombre
n'est pas faux, c'est un instantané.
La même réponse porte aussi des chiffres par index : chaque GSI et LSI
rapporte son propre ItemCount et IndexSizeBytes à la même cadence de six
heures. Comparer le nombre d'items d'un à celui de la
table est un joli check de santé gratuit — il te dit combien d'items portent
réellement la clé de l'index.
Méthode 2 : comptage exact avec Scan + Select COUNT
Quand « approximativement, tel que ce matin » ne suffit pas, compte pour de vrai :
aws dynamodb scan --table-name Orders --select COUNTLes faits à connaître avant de le lancer, tous tirés de la référence de l'API Scan :
COUNT« renvoie le nombre d'items correspondants, plutôt que les items correspondants eux-mêmes » — moins de trafic réseau, mais « cela utilise la même quantité d'unités de capacité de lecture que la récupération des items ». Un comptage exact d'une table de 100 Go est une lecture de 100 Go sur ta facture.- Une seule requête s'arrête toujours à 1 Mo de données scannées ; le
Countde la réponse « ne renvoie que le comptage des items propres à une seule requête de scan ». La CLI suitLastEvaluatedKeyet additionne les pages pour toi ; en code SDK, tu boucles et additionnes — voir la pagination. - Sur une grande table, répartis le travail avec un
scan parallèle (
--segment/--total-segments) et additionne les comptages par segment.
Compter un sous-ensemble
- Les items sous une clé de partition :
Queryavec--select COUNT— ne lit que les items de cette clé, donc c'est aussi bon marché que les données sont petites. C'est la bonne façon de compter une . - Les items correspondant à un filtre : ajoute une
FilterExpression— mais souviens-toi que le comptage qui t'est facturé estScannedCount, pasCount: DynamoDB filtre après la lecture, donc « compter les commandes archivées » via un scan filtré paie pour chaque commande. UnScannedCountélevé à côté d'un petitCountest la signature d'un filtre qui voudrait être un GSI — voir les stratégies de filtrage.
Pour des questions plus riches — comptages par statut, sommes, moyennes — DynamoDB
n'a pas du tout de GROUP BY ; les contournements sont dans
count, sum & aggregate.
Taille de table et nombre d'items dans DynoTable
DynoTable met les deux réponses là où tu regardes déjà. Chaque table ouverte a un bouton Stats (l'icône de graphique en barres) dans la barre d'outils de l'onglet ; le panneau affiche :
- Clé primaire et index secondaires — la forme de la table en un coup d'œil.
- Items · Size · Avg item — les estimations
DescribeTablede DynamoDB elles-mêmes, étiquetées comme des estimations, avec la mise en garde des six heures à un survol de distance. - Index table — un scan d'échantillonnage en un clic qui découvre chaque
attribut que tes items portent réellement (y compris les chemins imbriqués comme
commonData.status), avec la progression en direct. Il alimente l'autocomplétion des champs et un export TypeScript / Zod / JSON Schema inféré, et il engendre les coûts de lecture DynamoDB normaux — l'app le dit d'entrée de jeu.

Et pour les nombres exacts, l'assistant IA intégré calcule des comptages, des sommes et des ventilations par groupe sur la table entière à la demande — il lit chaque item correspondant plutôt que d'échantillonner une page, et il demande avant d'exécuter quoi que ce soit qui coûte de la capacité de lecture.
FAQ
Pourquoi mon nombre d'items DynamoDB est-il faux ?
Il n'est pas faux — il est périmé. ItemCount (et TableSizeBytes) se
rafraîchissent « approximativement toutes les six heures », donc les écritures et
suppressions récentes n'y sont pas encore reflétées. La vue d'ensemble de la table
dans la console affiche les mêmes nombres DescribeTable, avec le même décalage.
Comment compter exactement les lignes dans DynamoDB ?
aws dynamodb scan --table-name X --select COUNT — la CLI parcourt toute la table
page par page et additionne les comptages. C'est exact mais facturé à la même
capacité de lecture que la récupération de chaque item.
DescribeTable est-il gratuit ? Il ne consomme pas de capacité de lecture — c'est un appel de métadonnées, pas une lecture de données, donc le poller ne touchera pas le débit de ta table.
Comment trouver la taille d'un item ? DynamoDB facture par taille d'item (arrondie par tranche de 1 Ko en écriture / 4 Ko en lecture). Colle un item dans le calculateur de taille d'item pour voir sa taille facturée, et voir la limite d'item de 400 Ko pour le plafond.
Le nombre d'items affecte-t-il ma facture ?
Le stockage est facturé par TableSizeBytes, et les requêtes par taille d'item ×
nombre de requêtes — pas directement par nombre d'items. Mets les chiffres de ta
table dans le calculateur de prix pour voir
le tableau mensuel entre les modes on-demand et provisionné.
Tu veux la forme de la table, les estimations et les champs indexés à un clic ? Télécharge DynoTable et ouvre le panneau Stats sur n'importe quelle table.


