Приложение, которое мы создаем, может выполнять довольно большие запросы на вставку. Есть ли ограничение, что мой запрос postgres может содержать только определенное количество символов?
postgresql
Каннан Рамамурти
источник
источник
Ответы:
Для текущей версии PostgreSQL (до 9.5) запросы принимаются бэкэндом в
Stringinfo
буфере, который ограниченMaxAllocSize
следующим образом:(см. http://doxygen.postgresql.org/memutils_8h.html )
Таким образом, размер запроса ограничен 1 гигабайтом (2 ^ 30), минус 1 байт для завершающего нулевого байта.
Если клиент попытается отправить запрос большего размера, появится сообщение об ошибке, похожее на это:
где
N
размер запроса.Имейте в виду, что запрос ниже
1GB
может потребовать синтаксического анализа, планирования или выполнения большого объема памяти в дополнение к этому1GB
буферу.Если вам нужно вставить в запрос большую серию литералов, рассмотрите альтернативный вариант создания временной таблицы,
COPY
строк в ней и попросите основной запрос обратиться к этой временной таблице.источник