pg_ivm 1.16 공개…트랜잭션 오류 수정

2분 PostgreSQLpg_ivm증분 뷰버그 수정
최근 30일 조회수 — 좋아요 —

핵심 요약

IMMV 갱신 후 삭제 시 충돌과 자료형·OID·잠금 관련 결함을 해결해 운영 안정성을 높였다.

pg_ivm 1.16 공개…트랜잭션 오류 수정 — 기사 주제를 표현한 AI 생성 개념 삽화
AI 생성 개념 삽화 · 실제 사건을 촬영한 사진이 아닙니다.

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

  1. Postgres News, 「pg_ivm 1.16 released」 ↩ ↩2 ↩3 ↩4 ↩5

읽기 목록은 이 브라우저에 저장됩니다.

출처

  1. pg_ivm 1.16 released — Postgres News

이 글은 위 출처를 근거로 자동 생성된 뒤 발행됐습니다. 원문을 함께 확인해 주세요. 교차 보도 없이 단독 출처로 작성됐습니다.