Principiante6 min di lettura

Dimensioni DynamoDB Table e conteggio Item

Non esiste un SELECT COUNT(*) che puoi puntare a buon mercato su una tabella DynamoDB. DynamoDB ti dà due risposte molto diverse alla domanda "quanto è grande questo tabella?": a stima gratuita che può essere obsoleta fino a sei ore e un conteggio esatto questo costa una lettura completa della tabella. La maggior parte "perché il conteggio degli articoli è sbagliato?" la confusione è sceglierne uno aspettandosi il comportamento dell'altro.

Come posso ottenere il numero di elementi e le dimensioni di una tabella DynamoDB?

Chiama DescribeTable: restituisce ItemCount e TableSizeBytes gratuitamente, ma "DynamoDB aggiorna questo valore circa ogni sei ore. Modifiche recenti potrebbe non riflettersi in questo valore" (Riferimento AWS API). Per un numero esatto, esegui Scan con --select COUNT: restituisce solo risultati il conteggio, ma legge (e fattura) ogni articolo. Una GUI simile DynoTable mostra le stime su ogni tabella e può calcolare conteggi esatti su richiesta.

VuoiUtilizzareCostoFreschezza
Conteggio ballpark + dimensione, gratuitoDescribeTablenessuno (chiamata metadati)~6 ore stantio
Conteggio totale esattoScan con Select COUNTlegge tutta la tabellavivere
Conteggio esatto per una chiaveQuery con Select COUNTlegge gli elementi corrispondentivivere
Conteggio di un sottoinsieme filtratoScan/Query + filtro + COUNTlegge tutto scansionatovivere

Metodo 1: DescribeTable (gratuito, ~6 ore stantio)

DescribeTable è una ricerca di metadati: non legge elementi, quindi non consuma capacità di lettura e porta i due numeri che stai cercando:

aws dynamodb describe-table --table-name Orders \
  --query 'Table.[ItemCount, TableSizeBytes]'

Entrambi arrivano con lo stesso avvertimento, testualmente dal Riferimento API: "DynamoDB aggiorna questo valore circa ogni sei ore. Modifiche recenti potrebbe non riflettersi in questo valore." Quindi una tabella che hai appena caricato in blocco può segnala ItemCount: 0 per ore: il numero non è sbagliato, è un'istantanea.

La stessa risposta riporta anche cifre per indice: ogni GSI e LSI riporta i propri ItemCount e IndexSizeBytes sulla stessa cadenza di sei ore. Confrontare il conteggio degli articoli di con quello della tabella è a bel controllo sanitario gratuito: ti dice quanti elementi effettivamente portano l'indice chiave.

Metodo 2: conteggio esatto con Scan + Seleziona COUNT

Quando "approssimativamente, da stamattina" non è abbastanza, conta davvero:

aws dynamodb scan --table-name Orders --select COUNT

Fatti da sapere prima di eseguirlo, tutti dal Riferimento Scan API:

  • COUNT "restituisce il numero di elementi corrispondenti, anziché la corrispondenza elementi stessi" — meno traffico di rete, ma "questo utilizza lo stesso quantità di unità di capacità di lettura per ottenere gli elementi". Un conteggio esatto di a La tabella da 100 GB corrisponde a 100 GB letti in fattura.
  • Una singola richiesta si ferma ancora a 1 MB di dati scansionati; la risposta è Count "restituisce solo il conteggio degli elementi specifici di una singola scansione richiesta". La CLI segue LastEvaluatedKey e somma le pagine per te; dentro Codice SDK da ripetere e aggiungere: vedere impaginazione.
  • Su una tabella grande, dividere il lavoro con a scansione parallela (--segment / --total-segments) e sommare i conteggi per segmento.

Contare un sottoinsieme

  • Item con una chiave di partizione: Query con --select COUNT — legge solo gli elementi di quella chiave, quindi è tanto economico quanto i dati sono piccoli. Questo è il modo giusto per contare un .
  • Item che corrispondono a un filtro: aggiungi un FilterExpression, ma ricorda il il conteggio che ti verrà addebitato è ScannedCount, non Count: filtri DynamoDB dopo la lettura, quindi è conveniente "contare gli ordini archiviati" tramite una scansione filtrata ogni ordine. Un alto ScannedCount accanto ad un piccolo Count è la firma di un filtro che vuole essere un GSI — vedi strategie di filtraggio.

Per domande più dettagliate (conteggi per stato, somme, medie) DynamoDB non ha GROUP BY affatto; le soluzioni alternative vivono conteggio, somma e aggregazione. (Oppure salta il soluzione alternativa: SQL Workbench di DynoTable funziona GROUP BY e aggregati lato client.)

Dimensioni Table e numero di articoli in DynoTable

DynoTable inserisce entrambe le risposte dove stai già cercando. Ogni la tabella aperta ha un pulsante Statistiche (l'icona del grafico a barre) nella barra degli strumenti della scheda; il il pannello mostra:

  • Chiave primaria e indici secondari: la forma della tabella a colpo d'occhio.
  • Items · Dimensioni · Articolo medio: stime DescribeTable di DynamoDB, etichettati come stime, con l'avvertenza di sei ore che si allontana.
  • Tabella Indice: una scansione di campionamento con un clic che ne registra gli attributi trova (inclusi percorsi nidificati come commonData.status), con avanzamento in tempo reale. La scansione è limitata, pertanto è possibile che manchino attributi rari; i limiti sono attivi Panoramica e indicizzazione della tabella. Alimenta il campo completamento automatico e inferito Esportazione schema TypeScript/Zod/JSON, e comporta normali costi di lettura DynamoDB: l'app lo dice in anticipo.
Il pannello delle statistiche di Table in DynoTable: chiavi e indici, la riga di stima degli elementi Items/dimensione/media e l'elenco dei campi indicizzati.
Il pannello delle statistiche di Table in DynoTable: chiavi e indici, la riga di stima degli elementi Items/dimensione/media e l'elenco dei campi indicizzati.

E per i numeri esatti, l'agente AI integrato calcola conteggi, somme e suddivisioni per gruppo sull'intera tabella su request: legge ogni elemento corrispondente anziché campionare una pagina, e it chiede prima di eseguire qualsiasi cosa che costi la capacità di lettura.

FAQ

Perché il conteggio degli articoli del mio DynamoDB è sbagliato? ItemCount (e TableSizeBytes) si aggiornano "circa ogni sei ore", quindi le scritture e le eliminazioni recenti non vengono ancora riflesse. Panoramica della tabella della console mostra gli stessi numeri DescribeTable, con lo stesso ritardo.

Come faccio a contare esattamente le righe in DynamoDB? aws dynamodb scan --table-name X --select COUNT: la CLI scorre le pagine l'intera tabella e somma i conteggi per pagina. È esatto ma fattura la stessa lettura capacità di recuperare ogni articolo.

DescribeTable è gratuito? Non consuma capacità di lettura: è una chiamata di metadati, non una lettura di dati, quindi il polling non toccherà il throughput della tua tabella.Come faccio a trovare la taglia di un articolo? Misuratori DynamoDB in base alla dimensione dell'elemento (arrotondato per eccesso per 1 KB scritto/4 KB letti). Incolla un elemento nel file calcolatore delle dimensioni dell'articolo per visualizzarne la fatturazione dimensione e vedere il limite elementi di 400 KB per il file soffitto.

Il conteggio degli articoli influisce sulla mia fattura? Lo spazio di archiviazione viene fatturato da TableSizeBytes e le richieste in base alla dimensione dell'articolo × richiesta conteggio - non direttamente dal conteggio degli articoli. Inserisci i numeri della tua tabella nel calcolatore dei prezzi per vedere il mensile immagine nelle modalità on-demand e provisioning.

Vuoi che la forma della tabella, le stime e i campi indicizzati siano a portata di clic? Scarica DynoTable e apri il pannello Statistiche su qualsiasi tabella.

Aggiornato