Tworzona przez nas aplikacja może wykonywać dość duże zapytania dotyczące wstawiania. Czy istnieje ograniczenie, że moje zapytanie postgres może mieć tylko określoną liczbę znaków?
postgresql
Kannan Ramamoorthy
źródło
źródło
Odpowiedzi:
Dla aktualnej wersji PostgreSQL (do 9.5) zapytania są odbierane przez backend w
Stringinfo
buforze, który jest ograniczony doMaxAllocSize
, zdefiniowany jako:(patrz http://doxygen.postgresql.org/memutils_8h.html )
Zatem zapytanie jest ograniczone do 1 gigabajta (2 ^ 30), minus 1 bajt dla kończącego bajtu zerowego.
Jeśli klient spróbuje wysłać większe zapytanie, wróci taki błąd:
gdzie
N
jest rozmiar zapytania.Należy pamiętać, że zapytanie znajdujące się poniżej
1GB
może wymagać przeanalizowania, zaplanowania lub wykonania dużej ilości pamięci oprócz tego1GB
bufora.Jeśli chcesz wepchnąć dużą liczbę literałów do zapytania, zastanów się nad alternatywą tworzenia tabeli tymczasowej,
COPY
wierszy do niej i poproś, aby zapytanie główne odnosiło się do tej tabeli tymczasowej.źródło