jsonscraper
Ринки
До журналу

Cloudflare D1 обмежила розмір відповіді запиту: чому вивантаження бази працює інакше

Із 4 листопада запит D1 може завершитися помилкою, якщо результат перевищує 50 МБ. Обмеження стосується відповіді запиту; імпорт і експорт через REST API працюють і надалі.

Редакційна політика Повідомити про помилку

Запит до Cloudflare D1, який повертає результат розміром понад 50 МБ, із 4 листопада 2026 року завершується помилкою. Для розробника важливо розуміти межі цієї зміни: йдеться про розмір результату окремого запиту, а не про максимальний розмір бази. Імпорт і експорт через REST API під цей ліміт не підпадають, тож саме спосіб читання даних визначає, чи доведеться змінювати робочий процес.

Стаття: Cloudflare D1 обмежила розмір відповіді запиту: чому вивантаження бази працює інакше
Короткий зміст: Ліміт D1 у 50 МБ стосується розміру результату одного запиту, а не розміру бази. Розбираємо, яких операцій він торкається та як розбити великі запити на читання й вивантаження.
Роль зображення: обкладинка — центральна ідея
Розділ: Cloudflare D1 обмежила розмір відповіді запиту: чому вивантаження бази працює інакше
Візуальний сюжет: редакційне фото таблиці бази даних, представленої стосом напівпрозорих карток із даними
Ліміт стосується обсягу результату окремого SQL-запиту, а не загального розміру бази.© jsonscraper · створено за допомогою ШІ

Що саме обмежено?

Cloudflare описала цю зміну в дописі від 30 жовтня: запит, результат якого перевищує 50 МБ, повертає помилку D1 query result exceeded the maximum response size limit of 50 MB. Застосовувати ліміт почали 4 листопада 2026 року. У документації D1 його також зазначено як обмеження розміру результату запиту; водночас база може зберігати до 10 ГБ на платному плані або 500 МБ на безплатному.

Це різні рівні: сховище визначає обсяг даних у базі, а ліміт результату — скільки даних може повернути один запит. Тому база може містити значно більше ніж 50 МБ даних і залишатися доступною для читання частинами. Водночас навіть запит до невеликої бази може перевищити ліміт, якщо він вибирає багато широких рядків або великі текстові й двійкові поля.

У оголошенні Cloudflare про ліміт компанія зазначає, що поріг охоплює 99,999-й процентиль запитів D1. Це оцінка розподілу запитів, наведена постачальником; для перевірки застосунку важливіше виміряти конкретні відповіді й виявити запити, які повертають великі масиви даних.

Чому вивантаження через REST API — окремий випадок?

Зазвичай застосунок отримує результат виконання SQL і передає його коду, що викликав запит. Імпорт та експорт бази через REST API — інші операції: Cloudflare окремо зазначає, що на них новий поріг не поширюється і вони й надалі працюють, як раніше. Отже, помилка під час великої вибірки не означає, що з бази неможливо експортувати великий обсяг даних.

Стаття: Cloudflare D1 обмежила розмір відповіді запиту: чому вивантаження бази працює інакше
Короткий зміст: Ліміт D1 у 50 МБ стосується розміру результату одного запиту, а не розміру бази. Розбираємо, яких операцій він торкається та як розбити великі запити на читання й вивантаження.
Роль зображення: допоміжна ілюстрація 2 — інший конкретний аспект
Розділ: Чому вивантаження через REST API — окремий випадок?
Візуальний сюжет: технічна інфографіка українською, що показує два підтверджені шляхи: SQL-запит повертає рядки
Посторінкове читання розбиває відповіді SQL-запиту, а імпорт та експорт через REST API залишаються окремими операціями.© jsonscraper · ілюстрацію створено за допомогою ШІ

На практиці ця відмінність допомагає обрати правильний шлях. Якщо застосунку потрібні всі записи для відображення, обробки чи створення звіту, розбийте читання на порції. Якщо мета — перенести або вивантажити дані, перевірте сценарій експорту через REST API, а не намагайтеся отримати всю базу одним SQL-відгуком.

Як зменшити відповідь, не втративши потрібних даних?

Перший крок — прибрати зайві стовпці. Замість SELECT * вкажіть лише поля, потрібні для поточної операції. Це зменшує обсяг відповіді, особливо якщо таблиця містить довгі описи, JSON або значення BLOB.

Другий крок — читати рядки частинами за допомогою LIMIT і OFFSET, як рекомендує Cloudflare. Наприклад, інтерфейс може завантажувати наступну сторінку під час прокручування, а пакетне завдання — обробляти порції окремо. Додайте стабільне сортування, наприклад за унікальним ідентифікатором: без нього межі сторінок можуть змінюватися, якщо дані оновлюються між запитами.

Для тривалого вивантаження також варто зберігати контрольну точку останнього обробленого запису. Тоді завдання можна продовжити після збою, не обробляючи весь набір повторно. Конкретна схема залежить від застосунку; головний принцип — обмежувати розмір кожної відповіді, а не покладатися на один запит, що повертає весь набір цілком.

Що перевірити в застосунку

Почніть із запитів, які повертають великі списки: вивантажень для звітів, адміністративних екранів, фонових завдань і маршрутів API, що повертають масиви рядків. Тимчасово зафіксуйте обсяг серіалізованої відповіді або кількість і розміри вибраних полів. Потім перевірте максимальний очікуваний обсяг, а не лише звичайний невеликий набір тестових даних.

Якщо після зміни застосунок отримує помилку, документація D1 пов’язує її саме з результатом понад 50 МБ і радить вибирати потрібні стовпці або розбивати результат на сторінки. Це дає змогу відрізнити проблему з розміром відповіді від обмежень часу виконання, пам’яті чи доступності бази: вони мають інші помилки й причини.

Висновок для команди простий: звичайні короткі вибірки, імовірно, не потребуватимуть змін, а великі запити на читання варто перевести на порційну обробку. Сам ліміт не заважає зберігати більшу базу й не блокує експорт через REST API; він вимагає проєктувати запити так, щоб одна відповідь залишалася в межах 50 МБ.

Люди

Для цієї статті ще немає людей.

Продовжуйте читатиCloudflare D1 запроваджує обмеження на результати запитів: що перевірити до 4 листопада
Читайте наступну статтю

Перетворіть прочитане на робочу інтеграцію

Досліджуйте API соціальних даних jsonscraper, тестуйте запити й створюйте нові процеси.

Переглянути API