본문 바로가기

MVCC2

PostgreSQL 에서 Vacuum 이 필요한 이유 (MVCC, XID) 🧹 PostgreSQL을 사용한다면 Vacuum에 대해 반드시 잘 이해하고 적절하게 관리해야 합니다. 얼마전 운영하고있던 서비스에 Vacuum 을 통한 관리가 제대로 되지 않았던 이유로 DB부하가 심하게 와서 장애가 발생한 적이 있습니다. 이번 포스팅에서는 신경쓰지 않으면 서비스에 치명적일 수 있는 Vacuum 의 역할에 대해 자세히 알아보려고 합니다. Vacuum 의 첫 번째 역할, 공간확보! Vacuum의 사전적 의미는 "진공청소기를 이용한 청소" 입니다. UPDATE 와 DELETE 를 통해 변경 또는 삭제된 자료들이 차지 하고 있는 디스크 공간을 다시 사용하기 위해 불필요한 쓰레기 데이터들을 정리하고, 디스크 공간의 효율성을 높입니다. 왜 불필요한 쓰레기 데이터가 공간을 차지하는걸까요? 다중 버전.. 2023. 6. 4.
Oracle 과 PostgreSQL의 차이점 Oracle 과 PostgreSQL의 가장 큰 차이점은 2가지 정도로 나눌 수 있다. 1. MVCC 모델 구현 방식의 차이 MVCC란 다중 버전 동시성 제어(multiversion concurrency control, MCC, MVCC) 이다. 동시성 제어란 뭘까? 간단하게 말하면 만약 동시성 제어 없이 누군가가 데이터베이스를 읽는 동시에 다른 누군가가 기록을 하려고 한다면 사용자는 반쯤 기록되거나 일관성이 없는 데이터를 보게 될 가능성이 있다. 이렇게 동시성을 높이기 위해서는 '읽기 작업은 쓰기 작업을 블로킹 하지 않고, 쓰기 작업은 읽기 작업을 블로킹하지 않아야 한다'는 원칙을 지켜야 한다. 그 원칙을 지키기 위해 필요한게 MVCC 이다. - ORACLE : 이 MVCC를 구현하기 위해 UNDO 세그.. 2022. 1. 19.
반응형