TIL

TIL - PostgreSQL과 MySQL의 차이점 정리

kinim329 2026. 2. 28. 18:20

오늘은 PostgreSQL과 MySQL의 차이점에 대해 학습했다.

프로젝트에서 PostgreSQL을 사용하기로 결정하면서, 두 DB의 구조적 차이와 관리 방식등을 중심으로 정리했다.

 

PostgreSQL과 MySQL의 기본적인 차이

PostgreSQL은 SQL표준을 엄격하게 준수하며, 데이터 정합성과 확장성에 중점을 둔 데이터베이스이다.

반면에 MySQL은 PostgreSQL에 비해 비교적 유연한 문법을 허용하며, 단순 CRUD환경에 최적화되어 발전해왔다는 차이가 있다.

 

성능에서의 차이

두 DB 모두 Cost-Based Optimizer를 사용하지만, 쿼리 유형에 따라 성능 특성이 다르게 나타난다.

단순 조회 및 CRUD환경에서는 MySQL이 비교적 빠르게 동작하는 경우가 많다.

그러나 여러 테이블을 조인하거나, 서브쿼리 등이 포함되는 복잡한 쿼리에서는 PostgreSQL이 유리하다.

 

통계정보 갱신 방식의 차이

두 DB는 통계 정보를 갱신하느 방식에서도 차이를 보인다.

PostgreSQL은 MVCC구조를 사용하며, UPDATE나 DELETE가 발생하면 기존 데이터가 즉시 제거되지 않고 Dead Tuple이 남는다.

이를 정리하기 위해 VACUUM이 필요하며, 통계정보는 ANALYZE를 통해 갱신된다.

일반적으로는 autovacuum이 자동으로 VACUUM과 ANALYZE를 수행하지만 대량의 데이터 변경 이후에는 수동으로 처리해야 할 때도 있다.

반면 MySQL은 테이블 내부에 과거 버전을 남기지 않고, Undo Log 영역에 이전 값을 저장한다.

통계정보는 ANALYZE TABLE을 통해 재계산하며, 내부적으로 purge thread가 불필요한 undo데이터를 정리한다.

이처럼 두 DB는 동일하게 MVCC를 사용하지만, 과거 버전을 관리하는 구조화 통계 관리 방식에서 차이가 존재한다.

 

실무에서의 사용현황

실무에서는 MySQL이 많이 사용되는 편이다.

일단 오랜기간 사용되어온 서비스이기 때문에 자료가 풍부하며, 설정이 비교적 단순하고, 기본적인 CRUD 중심 서비스에서 유리한 성능을 제공하기도 한다.

 

이번 정리를 통해 데이터베이스를 선택하려면 내부 구조와 통계 관리 방식, 접근성까지 고려해야한다는 점을 알 수 있었다.

또,  동일 기능을 제공하더라도 구현 방식에 따라 성능 특성과 운영 관리 방식이 달라질 수 있다는 점을 이해하게 되었다.