쿼리의 최대 크기에 대해 흩어져있는 정보가 발견되었습니다.이 정보는 20MB에서 1GB 이상까지 다양합니다.Postgres에 허용되는 가장 긴 쿼리 문자열 길이를 찾는 방법은 무엇입니까?
테이블에 약 200k 행을 삽입하는 긴 쿼리 문자열이 있습니다. 디버그 출력에서 나는 문자열이 약 38MB 크기 인 39759604
문자 길이라는 것을 알 수있다.
이 쿼리를 실행하면 연결이 종료되고 데이터베이스가 복구 모드로 전환됩니다.
쿼리 문자열의 크기를 줄여 쿼리 문자열의 크기를 줄이면 쿼리가 성공적으로 실행됩니다.
나는 16Gb의 RAM을 가지고 있으며 그 중 9GB가 사용되는 것을 볼 수있다. 여기
은 포스트 그레스의 OUPUT가 로그인되어2017-10-13 12:51:03.110 UTC [1] LOG: server process (PID 93) was terminated by signal 9: Killed
2017-10-13 12:51:03.110 UTC [1] DETAIL: Failed process was running: INSERT INTO stats(...) VALUES ...
2017-10-13 12:51:03.115 UTC [1] LOG: terminating any other active server processes
2017-10-13 12:51:03.115 UTC [116] WARNING: terminating connection because of crash of another server process
2017-10-13 12:51:03.115 UTC [116] DETAIL: The postmaster has commanded this server process to roll back the current transaction and exit, because another server process exited abnormally and possibly corrupted shared memory.
2017-10-13 12:51:03.115 UTC [116] HINT: In a moment you should be able to reconnect to the database and repeat your command.
어떻게 내 특별한 경우에 무엇을 최대 쿼리 크기 사용할 수 있습니다 알 수 있습니까?
는 쿼리를 리팩토링 고려할 것 SQL 길이하기 전에 다른 한계를 칠 것 같아? .. 내 말은 아마 커널 설정의 의존하지만 어쩌면 당신은 더 나은 접근 방식을 변경? .. –
단일 명령으로 각 행 삽입 쿼리를 실행하려고 시도하고 꽤 오래 걸립니다. –
그래서 여러분은'삽입 ... VALUES(),(),() ...'크기가 38 MB입니까? .. 그러면 csv를 생성 한 후'COPY'가 훨씬 더 빠르고 안전하게 될 것입니다. –