DynamoDB'de öğeler nasıl sayılır?

Eşleşen öğeleri döndürmeden saymak için bir Query ya da Scan üzerinde Select: 'COUNT' kullanın. Her yanıt yalnızca taranan 1 MB'a kadarını sayar, dolayısıyla tam toplam için LastEvaluatedKey ile sayfalamanız ve Count değerlerini toplamanız gerekir. Yaklaşık bir tablo toplamı için DescribeTable'dan ItemCount'u okuyun. Gruplanmış bir sayım — ya da bir sütun üzerinde SUM/AVG — için DynoTable'ın SQL Workbench'i COUNT ve GROUP BY'ı tek sorgu olarak çalıştırır ve sayfalamayı sizin yerinize halleder.

Eşleşen öğeleri tam olarak saymak

Bir Query'de (tek bir bölüm anahtarı için) ya da Scan'de (tablonun tamamı) Select'i COUNT yapın. Yanıt Count ve ScannedCount döndürür ama hiç öğe verisi vermez. Taranan veri 1 MB'ı aşarsa işlem durur ve LastEvaluatedKey döndürür — o yok olana kadar çağırmaya ve Count eklemeye devam edin. Saymanın okumaktan ucuz olmadığına dikkat edin: COUNT, öğeleri döndürmenin tüketeceği okuma kapasitesinin aynısını tüketir.

Count ile ScannedCount

  • Count — bu sayfada anahtar/filtre koşullarınızla eşleşen öğeler.
  • ScannedCount — filtrelemeden önce incelenen öğeler. Bir filtre ifadesi sonuçları daraltır ama neyin tarandığını (ya da maliyetini) azaltmaz.

COUNT bir indirim değildir, ölçüldü

"Saymak okumakla aynıya mal olur" iddia etmesi kolay, kuşkulanması da kolay bir cümledir; işte her biri kabaca 3 KB olan 40 öğeyi (toplam 120.700 bayt) tutan bir tabloda, her çağrı ReturnConsumedCapacity: 'TOTAL' ile yapılarak:

İstekCountScannedCountConsumedCapacity
Select: 'COUNT' ile Query404015
Öğeleri döndüren Query404015
Scan, Select: 'COUNT', yarısıyla eşleşen filtre204015

Bakılması gereken üçüncü satırdır. Filtre Count'u yarıya indirir, ScannedCount'a dokunmaz ve faturayı hiç oynatmaz.

15, öngöreceğiniz sayıdır: 120.700 bayt, 30 adet dört kilobaytlık okuma birimine yuvarlanır ve bir Query aksini istemedikçe nihai tutarlı olduğu için yarıya iner.

Ucuz yaklaşım

DescribeTable, kabaca altı saatte bir güncellenen tablo geneli bir tahmin olan ItemCount'u döndürür. Ücretsiz ve anlıktır ama gerçek zamanlı değildir — panolar için iyi, kesin toplamlar için değil.

DynamoDB Local'a karşı test ediyorsanız bir uyarı: orada ItemCount anında güncellenir. 40 öğe yazıp DescribeTable çağırmak orada hemen 40 döndürür. Gerçek hizmet bunu yapmayacak, dolayısıyla yerelde geçen bir tazelik mantığı üretimde altı saat yanlış olabilir.

DynoTable ile sayma ve toplama

Ham API size COUNT verir ama GROUP BY, SUM ya da AVG vermez — gruplama ve toplama normalde uygulama kodunuzda olur. DynoTable'ın SQL Workbench'i bunları ekler: SELECT COUNT(*), SUM(total) ya da gruplanmış bir sayım yazın; sayfalama döngüsünü sizin yerinize çalıştırır ve sayfalar aktıkça sayıyı iyileştirir. Yine DynamoDB üzerinden okur, dolayısıyla aynı okuma kapasitesi maliyeti geçerlidir — ama bir döngü yerine tek sorgu yazarsınız ve API'nin doğrudan döndüremeyeceği gruplanmış ve toplanmış sonuçlar alırsınız.

Daha derine inin

DynamoDB'de sayma, toplama ve toplulaştırma sayfasını okuyun ve sayım sorgularını Expression Builder ile oluşturun. Tablolarınıza karşı sayımlar ve toplamalar (COUNT, SUM, GROUP BY) çalıştırmak için DynoTable'ı indirin.

Kaynaklar

En son 2026-07-13 tarihinde yukarıda bağlantısı verilen resmi AWS belgelerine karşı doğrulandı.

Kapasite rakamları 2026-07-28 tarihinde @aws-sdk/client-dynamodb 3.1095.0 üzerinden DynamoDB Local 3.3.0'a (amazon/dynamodb-local:latest) karşı yeniden üretildi. DynamoDB Local hizmet değildir; yukarıda not edilen ItemCount sapması ayrıştıkları yerlerden biridir.

Console olmadan DynamoDB ile çalış

DynamoDB’nin çalıştıramadığı gerçek SQL’i çalıştıran hızlı bir DynamoDB masaüstü istemcisi — JOINs, GROUP BY, toplamalar — görsel düzenleme ve kendi Bedrock anahtarların üzerinde bir yapay zekâ aracısıyla.

30 günlük ücretsiz deneme, kredi kartı yok — ardından süre sınırı olmayan Ücretsiz plan.