postgres 쿼리에 대한 최대 길이 제한이 있습니까?


33

우리가 구축하는 앱은 상당히 큰 삽입 쿼리를 실행할 수 있습니다. postgres 쿼리에 특정 수의 문자 만 사용할 수 있다는 제한이 있습니까?


2
그 특성의 한계에 접근하고 있다면 디자인을 재고해야한다고 말하고 싶습니다. 필자는 일반적으로 가까운 쿼리가 일반적으로 일종의 프레임 워크 (극단 문자열 연결 포함)에 의해 생성되며 실제와의 접촉을 잃는 경향이 있음을 발견했습니다.
Vérace

답변:


43

현재 PostgreSQL 버전 (최대 9.5)의 경우 다음과 같이 정의 된 Stringinfo버퍼 로 백엔드가 쿼리를받습니다 MaxAllocSize.

#define MaxAllocSize   ((Size) 0x3fffffff) /* 1 gigabyte - 1 */

( http://doxygen.postgresql.org/memutils_8h.html 참조 )

따라서 쿼리의 크기는 1 기가 바이트 (2 ^ 30)로 제한되며 종료 널 바이트의 경우 1 바이트를 뺀 것입니다.

클라이언트가 더 큰 쿼리를 보내려고하면 다음과 같은 오류가 다시 발생합니다.

오류 : 메모리 부족
세부 정보 : 0 바이트를 포함하는 문자열 버퍼를 N 바이트 이상 확대 할 수 없습니다 .

N쿼리 크기는 어디에 있습니까 ?

바로 아래 쿼리 1GB는 해당 1GB버퍼 외에 많은 양의 메모리를 구문 분석, 계획 또는 실행해야 할 수도 있습니다 .

일련의 리터럴을 쿼리로 푸시해야하는 경우 임시 테이블을 생성하는 대안을 고려 COPY하고 기본 쿼리가 해당 임시 테이블을 참조하도록하십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.