요즘 PostgreSQL을 사용한다는 이야기를 많이 들어, 기존에 팀 프로젝트에서 자주 사용하던 MySQL과 어떤 점이 다른지 알아보고 정리하였다.
MySQL과 PostgreSQL 차이점
MySQL | PostgreSQL | |
DB 특성 | RDBMS | ORDMBS |
방식 | 멀티 쓰레드 | 멀티 프로세스 |
사용 환경 | OLTP | OLTP, OLAP |
MVCC 지원 | UndoSegemnt 방식 | MGA 방식 |
UPDATE 방식 | UPDATE | INSERT & DELETE |
지원되는 JOIN | NL JOIN, HASH JOIN | NL JOIN, HASH JOIN, SORT JOIN |
Parallel Query for Select | 지원한다. | 지원한다. |
Default Transaction Isolation |
REPEATABLE READ | READ COMMITTED |
테이블 기본 구성 인덱스 | CLUSTERD INDEX | NON-CLUSTERD INDEX |
- 단순 CRUD
- PostgreSQL은 Update 작업 시, 변경 전 값을 삭제 마크 처리한 뒤, 변경 후 값을 새 행으로 추가하는 방식으로 작업하기 때문에 단순 CRUD 작업에서는 MySQL이 선호된다.
- PostgreSQL은 Update 작업 시, 변경 전 값을 삭제 마크 처리한 뒤, 변경 후 값을 새 행으로 추가하는 방식으로 작업하기 때문에 단순 CRUD 작업에서는 MySQL이 선호된다.
- Join 계산
- PostgreSQL은 멀티 프로세스 방식으로 Join 같은 복잡하고 어려운 작업에서 MySQL보다 좋은 성능을 보여준다.
- PostgreSQL은 멀티 프로세스 방식으로 Join 같은 복잡하고 어려운 작업에서 MySQL보다 좋은 성능을 보여준다.
- 인덱스 크기
- PostgreSQL은 필요한 부분만 인덱스를 생성하기 때문에, 저장 공간에 이점 및 CUD 작업에 따른 인덱스 유지 관리 비용도 절약된다.
- PostgreSQL은 필요한 부분만 인덱스를 생성하기 때문에, 저장 공간에 이점 및 CUD 작업에 따른 인덱스 유지 관리 비용도 절약된다.
MySQL 장점
- 다양한 스토리지 엔진을 지원한다.
- 간단한 쿼리에 대한 속도 및 안정성이 뛰어나다.
- 서버 최적화를 위한 다양한 옵션을 제공한다.
- MySQL의 InnoDB는 MyISAM 테이블 형식 때문에 테이블 오염 관련 문제가 계속해서 발생할 수 있고, 다른 엔진을 선택하면 MVCC와 ACID 규정을 준수하지 못하는 결과가 발생할 수 있다.
PostgreSQL 장점
- PostgreSQL은 ORDMBS 특성을 가지고 있어, 부모 테이블을 생성한 후, 상속 기능을 이용해 하위 테이블을 만들 수 있다.
- 복잡한 읽기-쓰기 작업에 뛰어나다.
- NoSQL 및 다양한 데이터 형식을 지원한다.
- 데이터 베이스의 크기에 제한을 두지 않는다.
- MVCC를 통해서 데이터를 읽는 사람과 작성하는 사람이 서로 통신하여 PostgreSQL 데이터 베이스를 동시에 관리할 수 있어, 데이터와 통신할 때마다, 읽기-쓰기 잠금을 할 필요가 없다.
결론
대규모 서비스를 계획한다면 PostgreSQL을 사용하는 것이 효율적이라고 생각하고, 소규모 서비스를 계획한다면 MySQL을 사용하는 것이 효율적이라고 생각한다.
* REF
https://techblog.woowahan.com/6550/
'DB' 카테고리의 다른 글
[DB] 문자열 데이터 타입에 글자(한글) 수 제한하기 (0) | 2023.07.29 |
---|---|
[DB] 정규화 (0) | 2022.12.15 |
[DB] MySQL (0) | 2022.12.08 |
Hot Key (0) | 2022.11.09 |