50 MB’tan büyük sonuç döndüren bir Cloudflare D1 sorgusu, 4 Kasım 2026’dan itibaren hata verir. Geliştiriciler için bu değişikliğin sınırını anlamak önemlidir: söz konusu olan veritabanının azami boyutu değil, tek bir sorgunun sonuç boyutudur. REST API üzerinden içe ve dışa aktarma işlemleri bu sınırın dışında kaldığından, iş akışında değişiklik gerekip gerekmediğini verilerin nasıl okunduğu belirler.

Tam olarak ne sınırlandırılıyor?
Cloudflare, 30 Ekim tarihli duyurusunda sonucu 50 MB’ı aşan bir sorgunun D1 query result exceeded the maximum response size limit of 50 MB hatasını döndürdüğünü açıkladı. Uygulama başlangıç tarihi 4 Kasım 2026. D1 belgelerinde de sorgu sonucu boyutu için bir sınır belirtiliyor; buna karşılık veritabanı ücretli planda 10 GB’a, ücretsiz planda ise 500 MB’a kadar veri saklayabiliyor.
Bunlar farklı katmanlardır: depolama sınırı veritabanındaki veri hacmini, sonuç sınırı ise tek bir sorgunun döndürebileceği veri miktarını belirler. Bu nedenle bir veritabanı 50 MB’tan çok daha fazla veri içerebilir ve veriler parça parça okunarak erişilebilir kalabilir. Öte yandan küçük bir veritabanındaki sorgu da çok sayıda geniş satır veya büyük metin ve ikili veri alanı seçiyorsa sınırı aşabilir.
Cloudflare’ın sınır duyurusunda şirket, eşiğin D1 sorgularının 99,999’uncu yüzdelik dilimini kapsadığını belirtiyor. Bu, sağlayıcının sunduğu bir dağılım tahminidir; uygulama açısından belirleyici olan, uygulamanın gerçek yanıtlarını ölçmek ve büyük veri dizileri döndüren sorguları saptamaktır.
REST API üzerinden dışa aktarma neden ayrı bir durum?
Bir uygulama sorgusu genellikle SQL işleminin sonucunu alıp çağıran koda iletir. REST API üzerinden veritabanını içe ve dışa aktarmak ise farklı işlemlerdir: Cloudflare bunların yeni eşiğe tabi olmadığını ve önceki gibi çalışmaya devam ettiğini ayrıca belirtiyor. Dolayısıyla büyük bir sorgu hatası, veritabanından büyük miktarda veri dışa aktarılamayacağı anlamına gelmez.

Uygulamada bu ayrım, doğru yöntemi seçmeye yardımcı olur. Uygulamanın görüntüleme, işleme veya raporlama için tüm kayıtlara ihtiyacı varsa okumayı parçalara bölün. Amaç verileri taşımak veya dışa aktarmaksa, tüm veritabanını tek bir SQL yanıtıyla almaya çalışmak yerine REST API üzerinden dışa aktarma yöntemini değerlendirin.
Gerekli verileri kaybetmeden yanıt boyutu nasıl azaltılır?
İlk adım, gereksiz sütunları sorgudan çıkarmaktır. SELECT * kullanmak yerine, o işlem için gereken alanları belirtin. Bu, özellikle tabloda uzun açıklamalar, JSON veya BLOB değerleri varsa yanıt boyutunu küçültür.
İkinci adım, Cloudflare’ın önerdiği gibi LIMIT ve OFFSET kullanarak satırları parçalar hâlinde okumaktır. Örneğin bir arayüz, kullanıcı kaydırdıkça sonraki sayfayı getirebilir; toplu iş ise verileri ayrı parçalar hâlinde işleyebilir. Kararlı bir sıralama, örneğin benzersiz bir tanımlayıcıya göre sıralama kullanın: veriler sorgular arasında değişirse bu olmadan sayfaların sınırları kayabilir.
Uzun süren dışa aktarımlarda, son işlenen kaydın bir kontrol noktasını da saklamak yararlı olur. Böylece görev, bir arıza sonrasında tüm veri kümesini yeniden işlemeden sürdürülebilir. Uygun şema uygulamaya bağlıdır; temel ilke, tüm veri kümesini tek seferde döndüren bir sorguya güvenmek yerine her yanıtın boyutunu sınırlamaktır.
Uygulamada neleri kontrol etmeli?
Rapor dışa aktarımları, yönetim ekranları, arka plan görevleri ve satır dizileri döndüren API uç noktaları gibi büyük listeler getiren sorgularla başlayın. Geçici olarak serileştirilmiş yanıtın boyutunu ya da seçilen alanların sayısını ve boyutlarını kaydedin. Ardından yalnızca küçük test veri kümelerini değil, beklenen en yüksek veri hacmini de kontrol edin.
Değişiklikten sonra uygulama hata alıyorsa D1 belgeleri, bu hatayı 50 MB’tan büyük sonuçlarla ilişkilendiriyor ve gerekli sütunları seçmeyi ya da sonucu sayfalara bölmeyi öneriyor. Böylece yanıt boyutu sorununu; farklı hata ve nedenleri olan çalışma süresi, bellek veya veritabanı erişilebilirliği sınırlamalarından ayırabilirsiniz.
Ekipler için sonuç basit: sıradan ve kısa sorgular muhtemelen değişiklik gerektirmez; büyük okumalar ise parçalı işlemeye geçirilmelidir. Bu sınır, daha büyük bir veritabanında veri saklamayı engellemez ve REST API üzerinden dışa aktarımı kapatmaz; sorguların tek bir yanıtı 50 MB sınırında kalacak şekilde tasarlanmasını gerektirir.