본문으로 건너뛰기
logical_decoding_work_mem

logical_decoding_work_mem

버전기본값context타입
14userinteger
15userinteger
16userinteger
17userinteger
18userinteger
19userinteger

logical decoding이 디코딩한 변경 내용을 로컬 디스크로 내려쓰기 전까지 사용할 수 있는 메모리 상한을 정한다. 기본값은 64MB다.

이 값은 logical streaming replication 연결 하나하나가 쓰는 메모리를 제한한다. 트랜잭션이 커밋되기 전까지 디코딩된 변경은 메모리에 쌓이는데, 이 한도를 넘으면 초과분이 디스크로 spill된다. 각 replication 연결은 이 크기의 buffer를 하나만 사용하고, 서버에 그런 연결이 동시에 많이 존재하는 경우는 드물기 때문에(max_wal_senders가 상한), work_mem보다 훨씬 크게 잡아도 안전하다. 값을 키우면 디코딩된 변경이 디스크로 쓰이는 양이 줄어든다.

운영 노트: 대량 배치나 장시간 트랜잭션이 많은 환경에서 logical replication 지연이 발생하면 이 값을 올려 디스크 spill을 줄이는 것이 첫 번째 조정 지점이다. pg_stat_replication_slotsspill_txns, spill_bytes로 spill 발생량을 확인한 뒤 조정하면 근거 있게 움직일 수 있다.

출처: PostgreSQL 18 문서