Die App, die wir erstellen, führt möglicherweise ziemlich große Einfügeabfragen aus. Gibt es eine Beschränkung, dass meine Postgres-Abfrage nur eine bestimmte Anzahl von Zeichen haben kann?
postgresql
Kannan Ramamoorthy
quelle
quelle
Antworten:
In der aktuellen PostgreSQL-Version (bis zu 9.5) werden Abfragen von einem Backend in einem
Stringinfo
Puffer empfangen, der auf Folgendes beschränktMaxAllocSize
ist:(siehe http://doxygen.postgresql.org/memutils_8h.html )
Eine Abfrage ist also auf 1 Gigabyte (2 ^ 30) begrenzt, minus 1 Byte für ein abschließendes Nullbyte.
Sollte ein Client versuchen, eine größere Abfrage zu senden, wird ein Fehler wie der folgende zurückgegeben:
Wo
N
ist die Größe der Abfrage.Beachten Sie, dass für eine Abfrage direkt darunter
1GB
möglicherweise zusätzlich viel Speicher analysiert, geplant oder ausgeführt werden muss1GB
Puffer .Wenn Sie eine große Anzahl von Literalen in eine Abfrage verschieben müssen, ziehen Sie die Alternative in Betracht, eine temporäre Tabelle zu erstellen, in die
COPY
Zeilen einzutragen und die Hauptabfrage auf diese temporäre Tabelle zu verweisen.quelle