pg_ivm 1.16 공개…트랜잭션 오류 수정
최근 30일 조회수 — 좋아요 —핵심 요약
IMMV 갱신 후 삭제 시 충돌과 자료형·OID·잠금 관련 결함을 해결해 운영 안정성을 높였다.

PostgreSQL용 증분 뷰 유지관리 확장 pg_ivm 1.16이 공개됐다. 이번 버전은 같은 트랜잭션에서 즉시 유지관리되는 구체화 뷰(IMMV)를 갱신한 뒤 삭제할 때 발생하던 세그멘테이션 오류를 수정했다. 정확히는 일반적인 행 삭제 충돌이 아니라, IMMV 유지관리와 뷰 삭제가 한 트랜잭션 안에서 이어질 때 프로세스가 비정상 종료되는 문제다.1
pg_ivm은 증분 뷰 유지관리(Incremental View Maintenance·IVM)를 PostgreSQL에 추가하는 확장 모듈이다. 구체화 뷰 전체를 다시 계산하는 대신 기반 테이블에서 바뀐 부분만 계산해 뷰에 반영한다. 특히 pg_ivm은 기반 테이블이 수정된 직후 구체화 뷰를 갱신하는 ‘즉시 유지관리’ 방식을 제공한다. 이번 오류 수정은 데이터 변경과 스키마 작업을 하나의 트랜잭션으로 묶는 경우의 안정성을 높이는 조치다.1
1.16에는 세 가지 수정도 함께 들어갔다. 먼저 기반 테이블에 기본 동등 연산자가 없는 자료형이 포함되면, 그 열을 뷰 정의에서 참조하지 않더라도 테이블 갱신 시 뷰 유지관리가 실패하던 문제가 해결됐다. 뷰가 실제로 사용하지 않는 열의 자료형 때문에 증분 갱신 전체가 중단되던 동작을 바로잡은 것이다.1
객체 식별자(OID) 처리도 손봤다. 전역 OID 카운터가 정수형 최댓값인 INT_MAX를 넘으면 뷰 유지관리가 실패했는데, 1.16은 이 범위에서 OID를 올바르게 처리한다.1
동시성 제어 과정에서 불필요하게 트랜잭션이 실패하던 현상도 개선됐다. pg_ivm은 동시에 유지관리가 실행될 때 생길 수 있는 이상을 막으려고 구체화 뷰에 잠금을 건다. 이전 버전에서는 커밋 중 잠금이 해제되는 시점 때문에 실제로 다른 증분 유지관리가 진행 중이지 않은데도 잠금 오류가 날 수 있었다. 부하가 걸리면 격리 수준 테스트가 간헐적으로 실패한 원인이기도 했다. 1.16은 기능을 넓히기보다 비정상 종료, 자료형 호환성, OID 경계값, 잠금 시점처럼 운영 안정성과 직결되는 결함을 정리한 릴리스다.1
Footnotes
읽기 목록은 이 브라우저에 저장됩니다.
출처
- pg_ivm 1.16 released — Postgres News
이 글은 위 출처를 근거로 자동 생성된 뒤 발행됐습니다. 원문을 함께 확인해 주세요. 교차 보도 없이 단독 출처로 작성됐습니다.