본문 바로가기
Dev Note/SQL

Oracle 과 PostgreSQL의 차이점

by iyos 2022. 1. 19.

 

 

Oracle 과 PostgreSQL의 가장 큰 차이점은 2가지 정도로 나눌 수 있다.

 

 


1. MVCC 모델 구현 방식의 차이

 

MVCC란 다중 버전 동시성 제어(multiversion concurrency control, MCC, MVCC) 이다.

 

동시성 제어란 뭘까? 간단하게 말하면 만약 동시성 제어 없이 누군가가 데이터베이스를 읽는 동시에 다른 누군가가 기록을 하려고 한다면 사용자는 반쯤 기록되거나 일관성이 없는 데이터를 보게 될 가능성이 있다.

이렇게 동시성을 높이기 위해서는 '읽기 작업은 쓰기 작업을 블로킹 하지 않고, 쓰기 작업은 읽기 작업을 블로킹하지 않아야 한다'는 원칙을 지켜야 한다. 그 원칙을 지키기 위해 필요한게 MVCC 이다.

 

- ORACLE : 이 MVCC를 구현하기 위해 UNDO 세그먼트를 사용한다.

- PostgreSQL : 블록 내에 이전 레코드를 저장하는 방식을 사용한다.

 


2. Shared Pool 존재 여부

 

오라클에서는 Parsing작업을 하기위해  Shared Pool을 사용한다. Parsing된 정보를 저장하는 Library Cache와 이러한 Parsing 작업을 진행하는데 필요한 Data Dictionary의 정보를 메모리상에 올려 저장하는 Data Dictionary Cache가 Shared Pool의 핵심이라고 볼 수 있다.

하지만 이  Shared Pool를 PostgreSQL에서는 제공하지 않는다.

대신, 프로세스 레벨에서 SQL 정보를 공유하는 기능을 제공한다. 즉, 하나의 프로세스에서 같은 SQL을 여러 번 수행하면 최초 1회만 하드 파싱을 한다. 이 부분은 옵티마이저 동작 원리를 파악하면 더 쉽게 이해할 수 있다.

 

 

 

 

반응형

'Dev Note > SQL' 카테고리의 다른 글

조직도 쿼리 개선  (0) 2021.08.23