temp_file_limit
| 버전 | 기본값 | context | 타입 |
|---|---|---|---|
| 14 | — | superuser | integer |
| 15 | — | superuser | integer |
| 16 | — | superuser | integer |
| 17 | — | superuser | integer |
| 18 | — | superuser | integer |
| 19 | — | superuser | integer |
프로세스 하나가 temp file에 쓸 수 있는 디스크 공간의 최대치를 지정한다. 정렬·hash용 temp file, held cursor의 저장 파일 등이 대상이다. 단위 없이 값을 주면 킬로바이트로 해석하며, 기본값 -1은 무제한이다. superuser와 적절한 SET 권한을 가진 사용자만 바꿀 수 있다.
이 한도는 한 PostgreSQL 프로세스가 어느 시점에 사용 중인 모든 temp file의 총량에 적용된다. 한도를 넘기려는 트랜잭션은 취소된다. 주의할 점은 명시적으로 만든 temporary table이 차지하는 디스크 공간은 이 한도에 포함되지 않는다는 것이다. 쿼리 실행 과정에서 내부적으로 생기는 temp file만 센다.
운영 노트:
work_mem을 초과하는 대형 정렬이나 hash가 디스크를 가득 채워 서버 전체를 멈추게 하는 사고를 막는 안전장치다. temp file이 놓이는 파일시스템 용량을 기준으로, 폭주 쿼리 하나가 디스크를 다 먹지 못할 수준의 값을 잡아두면 좋다. temp file 사용량은 pg_stat_database의 temp_bytes나 log_temp_files 설정으로 관찰할 수 있다.출처: PostgreSQL 18 문서