max_pred_locks_per_relation
| 버전 | 기본값 | context | 타입 |
|---|---|---|---|
| 14 | -2 | sighup | integer |
| 15 | -2 | sighup | integer |
| 16 | -2 | sighup | integer |
| 17 | -2 | sighup | integer |
| 18 | -2 | sighup | integer |
| 19 | -2 | sighup | integer |
하나의 relation에서 page·tuple 단위 predicate lock을 몇 개까지 유지하다가 relation 전체 lock으로 승격할지 정한다.
0 이상의 값은 절대 개수 제한이고, 음수 값은 max_pred_locks_per_transaction을 그 절댓값으로 나눈 수를 뜻한다. 기본값은 -2로, 이전 버전 PostgreSQL과 같은 동작을 유지한다. postgresql.conf 파일이나 서버 커맨드라인에서만 설정할 수 있다.
승격이 일어나면 lock 추적에 쓰는 메모리는 절약되지만 lock 범위가 relation 전체로 굵어져서, serializable transaction 간 충돌로 판정되는 범위가 넓어지고 직렬화 실패가 늘어날 수 있다.
출처: PostgreSQL 18 문서