Provisioned throughput decreases are limited within a given day

TL;DR — DynamoDB, tek bir UTC günü içinde bir tablonun (ya da GSI'nin) sağlanan okuma/yazma kapasitesini ne sıklıkla düşürebileceğinizi sınırlar. Tahsisatı kullandınız, bu yüzden UpdateTable reddedildi. Saatlik yeniden dolumu bekleyin, düşürmenizi daha az sayıda daha büyük adıma toplayın ya da tabloyu talep üzerine moda geçirin ve düşürmeleri yönetmeyi tamamen bırakın.

Ne anlama gelir

LimitExceededException: Subscriber limit exceeded: Provisioned throughput
decreases are limited within a given UTC day

Her tablo bir UTC gününe küçük bir kapasite düşürme bütçesiyle başlar (artışlar, hesap kotalarına ve DynamoDB'nin çok hızlı yükseltmenize izin vermemesine tabi olarak gerektiği kadar sık yapılabilir). Güne 4 düşürme mevcut olarak başlarsınız ve her saat 1 tane daha kazanırsınız, herhangi bir anda en fazla 4 mevcut olacak şekilde — tam 24 saatlik bir gün boyunca 27 düşürmeye kadar yeterli. Onu tüketin ve bütçe yeniden dolana kadar sonraki UpdateTable düşürme çağrıları bir LimitExceededException ile başarısız olur (HTTP 400; geliştirici kılavuzunun bu istisna için genel mesajı "Too many operations for a given subscriber."). Bu bir kotadır, dolayısıyla aynı pencere içinde körü körüne yeniden denemek yardımcı olmaz.

Neden olur

  • Otomatik ölçeklendirme çırpınması — ani bir iş yükü, DynamoDB otomatik ölçeklendirmesinin kapasiteyi tekrar tekrar aşağı adımlamasına neden olur ve düşürme bütçesini yakar.
  • Kapasiteyi çok sık düşüren bir betik — bir büyüğü yerine birçok küçük düşürme.
  • Yük testleri sırasında manuel ayar — trafik azaldıkça kapasiteyi tekrar tekrar düşürmek.
  • İndeks başına bütçeler — tablo ve GSI düşürme sınırları ayrıştırılmıştır, dolayısıyla her GSI'nin kendi tahsisatı vardır; birkaç indeksli bir tablo onlardan birinde çarpabilir. Hem tabloyu hem de bir GSI'yi düşüren tek bir UpdateTable isteği, herhangi biri mevcut sınırını aşarsa tamamen reddedilir.

Nasıl düzeltilir

  1. Yeniden dolumu bekleyin. Her saat bir düşürme mevcut olur (herhangi bir anda en fazla 4 mevcut); her UTC gününde yeni bir 4 düşürmelik bütçe başlar.
  2. Daha az, daha büyük düşürmeler yapın. Beş 160 birimlik adım yerine tek bir adımda 1000 → 200'e düşürün.
  3. Otomatik ölçeklendirmeyi ayarlayın — hedef kullanımı yükseltin ve bir ölçek-içeri bekleme süresi ekleyin, böylece bu kadar agresif düşürmeyi durdursun.
  4. İş yükü ani ya da öngörülemezse talep üzerine moda geçin:
    aws dynamodb update-table --table-name <Table> \
      --billing-mode PAY_PER_REQUEST
    Talep üzerine mod, manuel kapasite yönetimini (ve düşürme kotasını) tamamen kaldırır.

İlgili hatalar

Kaynaklar

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

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.