Dotaz do Cloudflare D1, který vrátí výsledek větší než 50 MB, od 4. listopadu 2026 skončí chybou. Pro vývojáře je důležité vymezit rozsah této změny: jde o velikost výsledku jednotlivého dotazu, nikoli o maximální velikost databáze. Import a export přes REST API tomuto limitu nepodléhají, takže to, zda bude nutné upravit pracovní postup, závisí na způsobu čtení dat.

Co přesně je omezeno?
Cloudflare změnu popsala v oznámení z 30. října: dotaz, jehož výsledek přesáhne 50 MB, vrátí chybu D1 query result exceeded the maximum response size limit of 50 MB. Limit začal platit 4. listopadu 2026. Dokumentace D1 rovněž uvádí limit velikosti výsledku dotazu; databáze přitom může na placeném tarifu uchovávat až 10 GB a na bezplatném 500 MB.
Jde o dvě různé úrovně: úložiště určuje objem dat v databázi, zatímco limit výsledku určuje, kolik dat může vrátit jeden dotaz. Databáze proto může obsahovat mnohem více než 50 MB dat a přesto zůstat dostupná pro čtení po částech. I dotaz do malé databáze však může limit překročit, pokud vybírá mnoho širokých řádků nebo rozsáhlá textová či binární pole.
V oznámení limitu Cloudflare společnost uvádí, že nastavená hranice pokrývá 99,999. percentil dotazů D1. Jde o odhad rozložení dotazů, který uvádí poskytovatel; pro ověření konkrétní aplikace je důležitější změřit její odpovědi a zjistit, které dotazy vracejí rozsáhlá množství dat.
Proč je export přes REST API zvláštní případ?
Dotaz aplikace obvykle získá výsledek SQL a předá ho volajícímu kódu. Import a export databáze přes REST API jsou jiné operace: Cloudflare výslovně uvádí, že se na ně nový limit nevztahuje a nadále fungují jako dosud. Chyba při rozsáhlém výběru tedy neznamená, že z databáze nelze exportovat velké množství dat.

V praxi toto rozlišení pomáhá zvolit správný postup. Pokud aplikace potřebuje všechny záznamy zobrazit, zpracovat nebo z nich vytvořit přehled, rozdělte čtení na menší dávky. Pokud chcete data přenést nebo exportovat, ověřte postup exportu přes REST API namísto pokusu získat celou databázi v jediné odpovědi SQL.
Jak zmenšit odpověď, aniž byste přišli o potřebná data?
Prvním krokem je odstranit nepotřebné sloupce. Místo SELECT * uveďte pouze pole potřebná pro danou operaci. Objem odpovědi se tím zmenší zejména tehdy, když tabulka obsahuje dlouhé popisy, JSON nebo hodnoty BLOB.
Druhým krokem je číst řádky po částech pomocí LIMIT a OFFSET, jak doporučuje Cloudflare. Rozhraní může například načíst další stránku při posouvání a dávková úloha může zpracovávat jednotlivé části samostatně. Přidejte stabilní řazení, například podle jedinečného identifikátoru: bez něj se mohou hranice stránek posouvat, pokud se data mezi dotazy změní.
U dlouhotrvajících exportů se vyplatí také ukládat kontrolní bod posledního zpracovaného záznamu. Po výpadku pak lze úlohu obnovit, aniž by bylo nutné znovu zpracovat celou sadu. Konkrétní řešení závisí na aplikaci; hlavní zásadou je omezit velikost každé odpovědi a nespoléhat na jediný dotaz, který vrátí celou sadu najednou.
Co ve své aplikaci zkontrolovat
Začněte u dotazů, které vracejí rozsáhlé seznamy: exportů pro přehledy, administračních obrazovek, úloh na pozadí a API endpointů vracejících pole řádků. Dočasně zaznamenávejte velikost serializované odpovědi nebo počet a velikosti vybraných polí. Poté ověřte maximální očekávaný objem, nejen obvykle malou testovací sadu dat.
Pokud aplikace po zavedení změny dostane chybu, dokumentace D1 ji spojuje právě s výsledkem větším než 50 MB a doporučuje vybírat potřebné sloupce nebo výsledek rozdělit na stránky. Tak lze odlišit problém s velikostí odpovědi od omezení doby běhu, paměti nebo dostupnosti databáze, které mají jiné chyby a příčiny.
Závěr pro týmy je jednoduchý: běžné krátké výběry pravděpodobně nebudou vyžadovat změny, zatímco rozsáhlé čtení je vhodné převést na dávkové zpracování. Samotný limit nebrání ukládání větší databáze ani neomezuje export přes REST API; vyžaduje pouze navrhnout dotazy tak, aby každá jednotlivá odpověď zůstala pod hranicí 50 MB.