PostgreSQL 18.5는 왜 없나: wrap 이후에 발견된 회귀와 18년 만의 두 번째 결번

18.4 다음이 18.6입니다. 18.5는 tarball까지 만들어졌다가 회귀가 발견되어 배포 없이 폐기됐습니다. PostgreSQL 역사상 결번된 마이너 버전은 여섯 개뿐이고, 사건으로 묶으면 2008년과 2026년 두 번입니다. 릴리스가 어떤 순서로 만들어지길래 취소가 번호를 소모하는지, 그리고 18년 전에는 무슨 일이 있었는지 1차 출처로 따라가 봅니다.

2026년 8월 26일

병렬 집계는 왜 절반만 병렬인가: 공유 해시 테이블 실험이 남긴 청구서

PostgreSQL의 병렬 집계는 워커가 부분 집계를 하고 리더 하나가 합치는 구조입니다. 그룹이 많으면 그 합치는 단계가 병목이 됩니다. pgEdge의 Andrei Lepikhov가 DSM 공유 해시 테이블로 이 단계를 없애 보고 균등 분포에서 4.8배를 얻었지만, skew에서 0.04배까지 무너졌습니다. 500만 그룹 쿼리로 병목을 직접 재 보고, 프로세스 모델이 어디서 값을 청구하는지 정리합니다.

2026년 8월 25일

pg_shmemviz: PostgreSQL 공유 메모리를 바이트와 구조체로 열어 본다

pg_walviz를 만든 Bertrand Drouvot이 이번엔 공유 메모리를 열었습니다. pg_shmem_allocations가 이름과 크기까지만 보여 주는 자리에서, pg_shmemviz는 DWARF 디버그 정보로 C 구조체의 필드 오프셋과 컴파일러 padding, NUMA 페이지 배치까지 브라우저에서 보여 줍니다. 개발용 도구이고 운영 인스턴스에서는 쓰면 안 된다는 조건이 붙습니다.

2026년 8월 24일

UUID v7을 primary key로: index 37MB가 30MB가 되는 이유

UUID v4는 값이 완전히 무작위라 B-tree leaf page를 흩어 놓습니다. 상위 비트에 타임스탬프를 담는 UUID v7은 그 문제를 없앱니다. PostgreSQL 18에 내장된 uuidv7()로 100만 행을 넣어 bigserial, v4, v7 세 가지의 index 크기와 leaf 밀도를 직접 재 봤고, 원문 수치가 그대로 재현됐습니다. 대신 생성 시각이 공개된다는 대가가 붙습니다.

2026년 8월 24일

timezone을 고쳤는데 왜 UTC가 섞여 나오나: PgBouncer와 Patroni 사이의 캐시

Oracle에서 Patroni 클러스터로 마이그레이션한 뒤 애플리케이션 로그에 올바른 타임스탬프와 UTC 타임스탬프가 섞여 나온 사례입니다. 원인은 두 겹이었습니다. ALTER SYSTEM으로 넣은 설정이 Patroni 재시작에 살아남지 못한 것과, PgBouncer가 startup parameter를 캐시한 것입니다. 클라이언트가 넘긴 startup parameter가 서버 설정을 어떻게 이기는지 직접 확인했습니다.

2026년 8월 24일

pgvector 이진 양자화: index 104MB가 10MB가 되는 대신 무엇을 내주나

AWS가 Aurora PostgreSQL에서 pgvector index를 이진 양자화로 압축해 1억 벡터 index를 367GB에서 38GB로 줄인 사례를 냈습니다. float32를 부호 1비트로 줄이는 방식인데, 벡터 자체는 32배 줄어도 index는 10배 정도만 줄어듭니다. 왜 그런지, 재순위화가 왜 필수인지, 그리고 pgvector 0.8.6으로 직접 재 본 수치를 정리합니다.

2026년 8월 24일

pg_walviz: WAL 세그먼트를 브라우저에서 바이트 단위로 들여다본다

Bertrand Drouvot가 WAL 세그먼트 파일을 브라우저에서 시각화하는 pg_walviz를 공개했습니다. pg_waldump가 record를 텍스트로 풀어 준다면, pg_walviz는 record가 세그먼트 안에 물리적으로 어떻게 놓이는지, 페이지 경계에서 어떻게 쪼개지는지, padding이 어디 들어가는지를 보여줍니다. WAL 학습 도구로서의 쓰임새를 정리합니다.

2026년 8월 15일

PostgreSQL 18.6 보안 릴리스: CVE 28건, 결번이 된 18.5, 그리고 업데이트 후 해야 할 일

8월 13일 PostgreSQL 18.6, 17.11, 16.15, 15.19, 14.24와 19 Beta 3가 동시에 나왔습니다. 보안 취약점 28건과 110건 넘는 버그를 수정한 대형 릴리스입니다. CVSS 8점대가 12건이고, 그중 psql COPY 취약점은 덤프 파일을 읽어들이는 일상 작업이 공격 경로가 됩니다. 18.5가 결번이 된 사연과 업데이트 후 별도로 실행해야 할 확인 쿼리까지 정리합니다.

2026년 8월 14일

subtransaction 64개의 벽: SAVEPOINT가 클러스터 전체를 느리게 만드는 경로

한 트랜잭션이 subtransaction을 64개 넘게 만들면 그 트랜잭션만 느려지는 게 아니라 클러스터 전체가 느려집니다. PlanetScale이 공개한 실측에서는 7,200 TPS가 160 TPS까지 떨어졌습니다. PGPROC 캐시 64개 한계와 pg_subtrans SLRU 조회 경로, hot standby 신규 접속까지 막히는 이유, 그리고 지금 우리 클러스터에서 확인할 진단 쿼리를 정리합니다.

2026년 8월 12일

13년 잠복한 cascading replication 버그: segment 경계에서 멈추는 standby, Kubernetes가 찾아냈다

PostgreSQL 9.3부터 잠복해 있던 cascading replication 버그를 CloudNativePG 팀이 찾아 고쳤습니다. cascading standby가 archive recovery로 폴백했다가 streaming 재접속을 시도할 때, 요청 위치가 WAL segment 경계에 정확히 걸리면 upstream이 거부하고 재시도 없이 멈추는 문제입니다. 메커니즘과 오류 메시지, 그리고 13년 만에 잡힌 이유를 정리합니다.

2026년 8월 5일