Choose a default theme

You can change your theme from the menu

PostgreSQL

Earlier revision · 1View current content

PostgreSQL은 SQL과 트랜잭션을 지원하는 객체 관계형 데이터베이스 관리 시스템이다. 관계형 질의 기능과 함께 사용자 정의 자료형·함수·연산자·인덱스 접근 방식 등 확장 지점을 제공한다. 응용 프로그램이 서버에 접속해 데이터를 공유하는 구조로 사용한다.

분야

객체 관계형 데이터베이스

관계형 기능과 확장성

기본 키와 외래 키, 제약 조건을 통해 데이터가 지켜야 할 규칙을 표현하고 조인·집계로 여러 테이블의 정보를 조회한다. 확장 기능은 저장할 값과 질의 방식의 범위를 넓혀 주지만, 설치한 확장의 버전과 업그레이드 가능성도 운영 구성의 일부가 된다.

MVCC와 VACUUM

다중 버전 동시성 제어에서는 다른 트랜잭션이 필요로 하는 이전 행 버전을 유지한다. 갱신이나 삭제가 일어나도 오래된 버전이 즉시 제거되는 것은 아니다. 더 이상 필요하지 않은 버전의 공간을 재사용할 수 있게 하는 정기 정리가 VACUUM의 주요 역할이다.

일반 VACUUM과 VACUUM FULL은 비용과 잠금 특성이 다르다. 일반 정리는 다른 데이터 작업과 함께 실행할 수 있지만, FULL은 테이블에 강한 배타 잠금을 요구한다. 파일 크기가 기대만큼 줄지 않았다는 이유만으로 운영 중 FULL을 반복하는 방식은 적절하지 않을 수 있다.

설계 예시

주문과 주문 항목을 서로 다른 테이블로 만들고 주문 번호로 연결하면, 상품별 매출과 사용자별 구매 내역을 다양한 조인으로 조회할 수 있다. 조회가 느리다면 실제 조건과 실행 계획, 인덱스뿐 아니라 통계의 상태도 함께 확인한다.

운영에서 확인할 점

autovacuum이 실행되는지, 오래 열린 트랜잭션이 정리를 지연시키는지 관찰한다. 백업은 복구 시험과 연결하고, 확장·자료형·정렬 규칙을 포함해 버전 변경을 검증한다. PostgreSQL과 MySQL은 모두 SQL 서버이지만 내부 저장 방식과 기능을 같은 것으로 가정하지 않는다.

참고 자료

관련 기술 비교

데이터베이스

관계형

MySQL · PostgreSQL · MariaDB · SQLite

NoSQL

Redis · MongoDB · Apache Cassandra

스토리지 엔진

InnoDB · RocksDB · MyRocks