본문으로 건너뛰기
bgwriter_flush_after

bgwriter_flush_after

버전기본값context타입
14512kB on Linuxsighupinteger
15512kB on Linuxsighupinteger
16512kB on Linuxsighupinteger
17512kB on Linuxsighupinteger
18512kB on Linuxsighupinteger
19512kB on Linuxsighupinteger

background writer가 이 양보다 많은 데이터를 쓰면 OS가 해당 쓰기를 storage로 내려보내도록 강제한다. 단위 없이 값을 주면 블록(BLCKSZ, 보통 8kB) 단위로 해석하며, 허용 범위는 0(강제 writeback 비활성)부터 2MB까지다. 기본값은 Linux에서 512kB, 그 외 플랫폼에서는 0이다.

이렇게 하면 kernel의 page cache에 쌓이는 dirty data 양이 제한된다. checkpoint 마지막의 fsync 시점이나 OS가 큰 배치로 데이터를 되쓰는 시점에 생기는 stall 가능성이 줄어, 트랜잭션 지연이 크게 개선되는 경우가 많다. 반대로 workload가 shared_buffers보다는 크고 OS의 page cache보다는 작은 경우에는 성능이 나빠질 수 있으며, 일부 플랫폼에서는 효과가 없다. background writer가 미리 써내는 dirty buffer가 kernel에 계속 쌓이기만 하면 checkpoint 때 몰아서 flush되는 문제가 되살아나므로, 이 파라미터는 background writer의 쓰기를 잘게 나눠 storage로 흘려보내는 역할을 한다.

postgresql.conf나 서버 커맨드라인에서만 설정할 수 있다.

출처: PostgreSQL 18 문서