log_parameter_max_length_on_error
| 버전 | 기본값 | context | 타입 |
|---|---|---|---|
| 14 | — | user | integer |
| 15 | — | user | integer |
| 16 | — | user | integer |
| 17 | — | user | integer |
| 18 | — | user | integer |
| 19 | — | user | integer |
에러 메시지에 포함되는 bind parameter 값의 최대 길이를 바이트 단위로 정한다.
0보다 큰 값이면 에러 메시지에 실리는 각 bind parameter 값을 그 바이트 수까지 잘라서 보여준다. 0(기본값)이면 에러 메시지에 bind parameter를 포함하지 않고, -1이면 전체를 출력한다. 단위 없이 값을 주면 바이트로 해석한다.
0이 아닌 값을 설정하면 오버헤드가 생긴다. 에러가 실제로 발생하는지와 무관하게, 모든 statement 시작 시점에 parameter 값의 텍스트 표현을 메모리에 보관해 둬야 하기 때문이다. parameter가 바이너리 형식으로 전달되면 텍스트 변환까지 필요해 비용이 더 크고, 텍스트로 전달되면 문자열 복사만 하면 되므로 상대적으로 저렴하다.
운영 노트: prepared statement 에러를 재현하기 어려울 때 어떤 parameter 값이 문제였는지 확인하는 데 유용하다. 다만 상시 켜두기보다는 문제를 조사하는 동안만 켜고, 필요하면 user 컨텍스트라는 점을 활용해 해당 세션이나 role 단위로만 적용하는 편이 낫다.
출처: PostgreSQL 18 문서