La aplicación que estamos creando podría ejecutar consultas de inserción bastante grandes. ¿Hay algún límite en que mi consulta de postgres pueda tener solo un cierto número de caracteres?
postgresql
Kannan Ramamoorthy
fuente
fuente
Respuestas:
Para la versión actual de PostgreSQL (hasta 9.5), un backend recibe las consultas en un
Stringinfo
búfer, que se limita aMaxAllocSize
, definido como:(ver http://doxygen.postgresql.org/memutils_8h.html )
Por lo tanto, una consulta está limitada a 1 gigabyte (2 ^ 30) de tamaño, menos 1 byte para un byte nulo de terminación.
Si un cliente intenta enviar una consulta más grande, volverá a aparecer un error similar al siguiente:
donde
N
es el tamaño de la consultaTenga en cuenta que una consulta a continuación
1GB
puede requerir que se analice, planifique o ejecute grandes cantidades de memoria, además de ese1GB
búfer.Si necesita insertar una gran serie de literales en una consulta, considere la alternativa de crear una tabla temporal,
COPY
filas en ella y que la consulta principal haga referencia a esa tabla temporal.fuente