max_standby_streaming_delay
| 버전 | 기본값 | context | 타입 |
|---|---|---|---|
| 14 | 30 seconds | sighup | integer |
| 15 | 30 seconds | sighup | integer |
| 16 | 30 seconds | sighup | integer |
| 17 | 30 seconds | sighup | integer |
| 18 | 30 seconds | sighup | integer |
| 19 | 30 seconds | sighup | integer |
hot standby가 활성일 때, 곧 적용될 WAL 내용과 충돌하는 standby 쿼리를 취소하기 전까지 얼마나 기다릴지 정한다. streaming replication으로 WAL을 수신할 때 쓰이는 값이다. 단위 없이 주면 밀리초로 해석하며 기본값은 30초다. -1로 두면 충돌 쿼리가 끝날 때까지 무한정 기다린다. postgresql.conf나 서버 커맨드라인에서만 설정할 수 있고, standby 서버에 적용된다.
이 값은 쿼리 하나가 취소 전까지 실행될 수 있는 최대 시간이 아니라, primary에서 받은 WAL을 적용하는 데 허용되는 총 대기 시간이다. 한 쿼리가 지연을 크게 만들었다면 standby가 다시 따라잡기 전까지 뒤의 충돌 쿼리들은 유예 시간이 훨씬 짧아진다.
WAL archive에서 읽어 적용할 때는 이 값 대신 max_standby_archive_delay가 적용된다.
운영 노트: 값을 키우면 standby 쿼리가 덜 취소되지만 그만큼 replication 적용 지연이 커져 failover 시 데이터 최신성이 떨어진다. 읽기 분산용 standby와 HA용 standby의 값을 다르게 가져가는 것도 방법이다.
출처: PostgreSQL 18 문서