Bir DynamoDB Tablosunun Boyutu ve Öğe Sayısı Nasıl Alınır
Bir DynamoDB tablosuna ucuza doğrultabileceğiniz bir SELECT COUNT(*) yoktur.
DynamoDB, "bu tablo ne kadar büyük?" sorusuna birbirinden çok farklı iki yanıt
verir: altı saate kadar bayat olabilen ücretsiz bir tahmin ve tablonun tam
bir okumasına mal olan kesin bir sayım. "Öğe sayım neden yanlış?"
kafa karışıklığının çoğu, birini seçip diğerinin davranışını beklemektir.
Bir DynamoDB tablosunun öğe sayısını ve boyutunu nasıl alırım?
DescribeTable'ı çağırın: ItemCount ve TableSizeBytes'ı ücretsiz döndürür,
ama "DynamoDB bu değeri yaklaşık her altı saatte bir günceller. Son
değişiklikler bu değere yansımamış olabilir"
(AWS API referansı).
Kesin bir sayı için, --select COUNT ile bir Scan çalıştırın — yalnızca
sayımı döndürür, ama her öğeyi okur (ve faturalandırır).
DynoTable gibi bir GUI, tahminleri her tabloda gösterir ve talep
üzerine kesin sayımlar hesaplayabilir.
| İstediğiniz | Kullanın | Maliyet | Tazelik |
|---|---|---|---|
| Kabaca sayım + boyut, ücretsiz | DescribeTable | yok (meta veri çağrısı) | ~6 sa bayat |
| Kesin toplam sayım | Select COUNT ile Scan | tüm tabloyu okur | canlı |
| Tek bir anahtar için kesin sayım | Select COUNT ile Query | eşleşen öğeleri okur | canlı |
| Filtrelenmiş bir alt kümenin sayımı | Scan/Query + filtre + COUNT | taranan her şeyi okur | canlı |
Yöntem 1: DescribeTable (ücretsiz, ~6 sa bayat)
DescribeTable bir meta veri sorgusudur — hiçbir öğe okumaz, dolayısıyla
okuma kapasitesi tüketmez ve peşinde olduğunuz iki sayıyı taşır:
aws dynamodb describe-table --table-name Orders \
--query 'Table.[ItemCount, TableSizeBytes]'İkisi de aynı uyarıyla gelir,
API referansından
kelimesi kelimesine: "DynamoDB bu değeri yaklaşık her altı saatte bir günceller.
Son değişiklikler bu değere yansımamış olabilir." Yani az önce toplu
yüklediğiniz bir tablo saatlerce ItemCount: 0 raporlayabilir — sayı yanlış
değildir, bir anlık görüntüdür.
Aynı yanıt dizin başına rakamları da taşır: her GSI ve LSI,
aynı altı saatlik ritimde kendi ItemCount ve IndexSizeBytes değerlerini
raporlar. Bir öğe sayısını tablonunkiyle karşılaştırmak
hoş, ücretsiz bir sağlık kontrolüdür — kaç öğenin gerçekten dizin anahtarını
taşıdığını söyler.
Yöntem 2: Scan + Select COUNT ile kesin sayım
"Yaklaşık, bu sabah itibarıyla" yeterince iyi olmadığında, gerçekten sayın:
aws dynamodb scan --table-name Orders --select COUNTÇalıştırmadan önce bilmeniz gereken gerçekler, hepsi Scan API referansından:
COUNT, "eşleşen öğelerin kendileri yerine eşleşen öğelerin sayısını döndürür" — daha az ağ trafiği, ama "bu, öğeleri almakla aynı miktarda okuma kapasitesi birimi kullanır". 100 GB'lik bir tablonun kesin sayımı, faturanızda 100 GB'lik bir okumadır.- Tek bir istek yine taranan 1 MB veride durur; yanıttaki
Count"yalnızca tek bir tarama isteğine özgü öğelerin sayısını döndürür". CLI sizin içinLastEvaluatedKey'i izler ve sayfaları toplar; SDK kodunda döngü kurar ve toplarsınız — bkz. sayfalama. - Büyük bir tabloda işi bir
paralel tarama ile bölün (
--segment/--total-segments) ve segment başına sayımları toplayın.
Bir alt kümeyi saymak
- Tek bir bölüm anahtarı altındaki öğeler:
--select COUNTileQuery— yalnızca o anahtarın öğelerini okur, yani veri ne kadar küçükse o kadar ucuzdur. Bir saymanın doğru yolu budur. - Bir filtreyle eşleşen öğeler: bir
FilterExpressionekleyin — ama faturalandırıldığınız sayınınCountdeğilScannedCountolduğunu unutmayın: DynamoDB, okuduktan sonra filtreler, yani filtrelenmiş bir taramayla "arşivlenmiş siparişleri say" her sipariş için öder. Küçük birCount'un yanındaki yüksek birScannedCount, bir GSI olmak isteyen bir filtrenin imzasıdır — bkz. filtreleme stratejileri.
Daha zengin sorular için — durum başına sayımlar, toplamlar, ortalamalar —
DynamoDB'nin hiç GROUP BY'ı yoktur; geçici çözümler
sayım, toplam ve toplulaştırma
bölümünde yaşar.
DynoTable'da tablo boyutu ve öğe sayısı
DynoTable, iki yanıtı da zaten baktığınız yere koyar. Her açık tablonun sekme araç çubuğunda bir Stats düğmesi (çubuk grafik simgesi) vardır; panel şunları gösterir:
- Birincil anahtar ve ikincil dizinler — tablonun şekli bir bakışta.
- Items · Size · Avg item — DynamoDB'nin kendi
DescribeTabletahminleri, tahmin olarak etiketlenmiş, altı saatlik uyarı bir fare üstüne getirme uzağınızda. - Index table — öğelerinizin gerçekten taşıdığı her özniteliği (
commonData.statusgibi iç içe yollar dahil) canlı ilerlemeyle keşfeden tek tıklık bir örnekleme taraması. Alan otomatik tamamlamayı ve çıkarsanan bir TypeScript / Zod / JSON Schema dışa aktarımını besler ve normal DynamoDB okuma maliyetlerine yol açar — uygulama bunu baştan söyler.

Ve kesin sayılar için, yerleşik AI asistanı talep üzerine tüm tablo üzerinde sayımlar, toplamlar ve grup başına dökümler hesaplar — bir sayfayı örneklemek yerine eşleşen her öğeyi okur ve okuma kapasitesine mal olan herhangi bir şeyi çalıştırmadan önce sorar.
SSS
DynamoDB öğe sayım neden yanlış?
Yanlış değil — bayat. ItemCount (ve TableSizeBytes) "yaklaşık her altı
saatte bir" yenilenir, yani son yazmalar ve silmeler henüz yansımamıştır.
Konsolun tablo genel bakışı, aynı gecikmeyle aynı DescribeTable sayılarını
gösterir.
DynamoDB'de satırları tam olarak nasıl sayarım?
aws dynamodb scan --table-name X --select COUNT — CLI tüm tabloyu
sayfalayarak dolaşır ve sayfa başına sayımları toplar. Kesindir ama her öğeyi
getirmekle aynı okuma kapasitesini faturalandırır.
DescribeTable ücretsiz mi? Okuma kapasitesi tüketmez — bir veri okuması değil, bir meta veri çağrısıdır; dolayısıyla onu yoklamak tablonuzun throughput'una dokunmaz.
Tek bir öğenin boyutunu nasıl bulurum? DynamoDB, öğe boyutuna göre ölçer (yazılan 1 KB / okunan 4 KB başına yukarı yuvarlanır). Faturalandırılan boyutunu görmek için bir öğeyi öğe boyutu hesaplayıcısına yapıştırın ve tavan için 400 KB öğe sınırına bakın.
Öğe sayısı faturamı etkiler mi?
Depolama TableSizeBytes'a göre, istekler ise öğe boyutu × istek sayısına
göre faturalandırılır — doğrudan öğe sayısına göre değil. Aylık resmi
isteğe bağlı ve sağlanan modlar genelinde görmek için tablonuzun sayılarını
fiyatlandırma hesaplayıcısına girin.
Tablonun şeklini, tahminlerini ve dizinlenmiş alanlarını bir tık uzağınızda mı istiyorsunuz? DynoTable'ı indirin ve herhangi bir tabloda Stats panelini açın.


