본문으로 건너뛰기

synchronize_seqscans

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

큰 테이블의 sequential scan들이 서로 동기화해 같은 블록을 비슷한 시점에 읽으며 I/O를 공유하도록 할지 정한다.

on이면 새 scan이 이미 진행 중인 scan의 위치에 맞춰 테이블 중간에서 시작한 뒤 끝을 지나 처음으로 되돌아오는(wrap around) 방식으로 전체 row를 훑는다. 여러 세션이 같은 큰 테이블을 동시에 읽을 때 디스크 I/O를 나눠 쓸 수 있다. 대신 ORDER BY가 없는 쿼리의 row 반환 순서가 예측할 수 없게 달라질 수 있다. off로 두면 sequential scan이 항상 테이블 처음부터 시작하는 8.3 이전 동작이 보장된다. 기본값은 on이다.

운영 노트: ORDER BY 없는 SELECT의 결과 순서에 의존하는 레거시 애플리케이션이 “가끔 순서가 뒤바뀌는” 증상을 보이면 이 파라미터가 원인일 수 있다. 다만 파라미터를 끄는 것은 임시방편이고, 순서가 필요한 쿼리에 ORDER BY를 명시하는 것이 올바른 수정이다.

출처: PostgreSQL 18 문서