O aplicativo que estamos construindo pode executar consultas de inserção bastante grandes. Existe um limite para que minha consulta postgres possa ter apenas um certo número de caracteres?
postgresql
Kannan Ramamoorthy
fonte
fonte
Respostas:
Para a versão atual do PostgreSQL (até 9.5), as consultas são recebidas por um back-end em um
Stringinfo
buffer, limitado aMaxAllocSize
, definido como:(consulte http://doxygen.postgresql.org/memutils_8h.html )
Portanto, uma consulta é limitada a 1 gigabyte (2 ^ 30) de tamanho, menos 1 byte para um byte nulo final.
Se um cliente tentar enviar uma consulta maior, um erro parecido com este retornaria:
onde
N
é o tamanho da consulta.Esteja ciente de que uma consulta logo abaixo
1GB
pode exigir que grandes quantidades de memória sejam analisadas, planejadas ou executadas, além desse1GB
buffer.Se você precisar enviar uma grande série de literais para uma consulta, considere a alternativa de criar uma tabela temporária,
COPY
linhas nela e faça com que a consulta principal se refira a essa tabela temporária.fonte