Caiu ou Não?Pesquisar serviço
PT
APIs e infraestrutura

Cloudflare D1 limita consultas a 50 MB: como corrigir

A partir de 4 de novembro, consultas D1 que retornarem mais de 50 MB falharão. Veja como corrigir APIs, painéis e exportações antes da aplicação do limite.

Computador exibindo uma consulta Cloudflare D1 dividida em páginas abaixo do limite de 50 MB

Resposta rápida

A partir de 4 de novembro de 2026, o Cloudflare D1 rejeitará qualquer consulta cujo resultado ultrapasse 50 MB. A mensagem esperada é D1 query result exceeded the maximum response size limit of 50 MB. A Cloudflare publicou o aviso em 30 de outubro e informa que a mudança cobre consultas feitas pela Workers Binding API e pelos endpoints de consulta da API REST.

Para corrigir, troque SELECT * pelas colunas realmente usadas e divida o resultado com LIMIT e OFFSET. Se o objetivo for extrair ou fazer backup de grande volume, use o fluxo oficial de exportação: importações e exportações pela API REST não estão sujeitas a esse limite. Não tente resolver com retry, batch ou upgrade de plano, porque a restrição é por resultado de cada consulta.

O limite é do resultado, não do banco inteiro

Os 50 MB medem a resposta de uma consulta individual. Eles não reduzem o tamanho máximo do banco, que continua documentado como 10 GB por banco nos planos pagos e 500 MB no plano gratuito. Também são diferentes do limite de 2 MB para uma linha, BLOB ou string e da duração máxima de 30 segundos para uma consulta.

Uma consulta pode falhar mesmo em um banco dentro da capacidade quando devolve muitas linhas ou colunas grandes. A documentação também esclarece que cada instrução de um batch é avaliada separadamente: repartir comandos em um batch não transforma uma resposta acima do limite em uma resposta válida.

Encontre as consultas que podem quebrar

Comece por endpoints que devolvem tabelas inteiras, telas administrativas sem paginação, relatórios em JSON, sincronizações e downloads montados com SELECT *. Priorize consultas que incluem textos extensos, JSON ou BLOBs mesmo quando a interface usa apenas alguns campos.

A Cloudflare recomenda registrar a consulta responsável, removendo dados pessoais, e capturar a mensagem completa do erro, inclusive error.cause.message. Relacione o log à rota, ao banco e ao consumidor para não alterar uma consulta diferente da que produz a resposta grande.

  • Pesquise SELECT * e rotas que não usam LIMIT no código que acessa o D1.
  • Liste APIs, dashboards, jobs e exportações que consomem muitos registros de uma vez.
  • Teste com uma base representativa antes de 4 de novembro e registre a consulta que mais se aproxima do limite.
  • Confirme quais colunas o consumidor realmente usa e se alguma contém texto, JSON ou arquivo binário.

Retorne apenas as colunas necessárias

Substitua SELECT * por uma lista explícita. Uma tela de pedidos que mostra identificador, data e status não precisa receber observações, payloads de integração ou documentos armazenados na mesma linha. Para detalhes, crie uma segunda consulta por identificador e carregue o conteúdo grande somente quando o usuário pedir.

Quando o cliente precisa apenas de uma quantidade, soma ou agrupamento, faça a agregação no SQL em vez de transferir todos os registros. A correção reduz a resposta e também torna o contrato da API mais previsível, mas ainda precisa ser validada com dados reais porque a quantidade de bytes depende dos valores retornados.

Pagine com LIMIT e OFFSET

A orientação oficial para resultados grandes é usar LIMIT e OFFSET. Defina um tamanho de página que fique confortavelmente abaixo de 50 MB e uma ordenação estável, por exemplo ORDER BY id, para que páginas consecutivas tenham uma sequência previsível. O cliente solicita a próxima página até receber menos itens que o limite escolhido.

Paginação só resolve o limite quando cada consulta fica abaixo de 50 MB. Não reúna todas as páginas em memória para devolver um único JSON gigante no mesmo endpoint, pois isso transfere o problema para o Worker, o navegador ou o consumidor. Se a necessidade real é obter o banco completo, use exportação.

  • Escolha apenas as colunas usadas e adicione ORDER BY com uma chave estável.
  • Execute SELECT id, created_at, status FROM orders ORDER BY id LIMIT ? OFFSET ?.
  • Retorne itens e informações de paginação sem anexar todas as páginas anteriores.
  • Teste a primeira, uma intermediária e a última página com o maior volume esperado.

Use exportação para backup ou extração completa

A Cloudflare exclui importações e exportações pela API REST do limite de 50 MB. Para uma extração operacional, use o comando wrangler d1 export NOME_DO_BANCO --remote --output=backup.sql ou o endpoint oficial de exportação. É possível exportar o banco inteiro, uma tabela, apenas o esquema ou apenas os dados.

Esse fluxo não serve como resposta interativa de baixa latência. A documentação alerta que uma exportação em execução bloqueia outras solicitações ao banco; no endpoint REST, o cliente deve continuar consultando o estado da operação, pois uma exportação que deixa de ser acompanhada pode ser cancelada. Tabelas virtuais não são compatíveis com o recurso de exportação documentado.

Retry, batch e upgrade não removem o limite

Repetir a mesma consulta sem mudar colunas ou quantidade de linhas tende a produzir o mesmo resultado acima de 50 MB. Backoff é útil para falhas transitórias, mas não altera um limite determinístico de resposta. Dividir instruções em batch também não funciona como contorno, porque cada resultado é verificado individualmente.

A página de limites documenta 50 MB como valor do produto, sem um teto maior por plano. Portanto, não presuma que pagar outro plano libera a consulta. Redesenhe a resposta ou use a exportação apropriada e valide a documentação novamente antes de tomar uma decisão de capacidade.

É limite do D1 ou indisponibilidade da Cloudflare?

A mensagem exata sobre maximum response size limit of 50 MB aponta para a consulta. Se houver erros de conexão, reinício, sobrecarga ou falhas simultâneas em outros produtos, consulte o Cloudflare Status e teste o endpoint publicamente antes de atribuir tudo ao novo limite.

O diagnóstico web confirma DNS, TLS e resposta HTTP externa, mas não enxerga o SQL nem o tamanho da resposta interna do D1. Use-o para separar uma falha de acesso do erro do banco e confirme a causa nos logs do Worker ou da aplicação.

Limitações e próxima ação útil

Este guia foi verificado em 31 de outubro de 2026. A aplicação do limite estava anunciada para 4 de novembro de 2026, e a Cloudflare afirmou que 50 MB cobre o percentil 99,999 dos resultados observados. Essa estimativa não garante que sua aplicação esteja fora de risco; esquema, volume e conteúdo variam, e a documentação pode ser atualizada.

A próxima ação é localizar hoje SELECT * e endpoints sem paginação, priorizar relatórios e downloads administrativos, escolher apenas as colunas necessárias e testar LIMIT/OFFSET com dados representativos. Para backup ou extração completa, troque a consulta comum pelo fluxo oficial de exportação e programe a janela considerando o bloqueio temporário do banco.

Faça o próximo teste

Fontes consultadas

Os links abaixo servem para conferir conceitos, orientações oficiais e o critério editorial usado neste conteúdo.

Outros guias ligados ao mesmo tipo de problema.