본문 바로가기

DB

[DB] MySQL vs PostgreSQL

요즘 PostgreSQL을 사용한다는 이야기를 많이 들어, 기존에 팀 프로젝트에서 자주 사용하던 MySQL과 어떤 점이 다른지 알아보고 정리하였다.

 

MySQLPostgreSQL 차이점

  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이 선호된다.
  • Join 계산
    • PostgreSQL은 멀티 프로세스 방식으로 Join 같은 복잡하고 어려운 작업에서 MySQL보다 좋은 성능을 보여준다.

  • 인덱스 크기
    • 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