본문 바로가기

컴퓨터/데이터베이스

MySQL vs PostgreSQL 어떤 차이점이 있을까?

반응형

 

오늘날 가장 대중적으로 쓰이는 DBMS는 단연코 MySQL 이라고 할수있다

빠른속도와 접근성이 좋기떄문에 공부하는 DBA나 프로젝트에서 데이터관리 목적으로 자주 쓰이곤 한다

 

데이터가 계속해서 누적될때마다 대량의 데이터 작업은 필연적으로 느려지기 마련이다

MySQL에서 제공되는 방식은 대량에 데이터를 처리하기에는 한계가 있었는데

 

이에 따라 대용량 데이터 처리에 특화되있는 PostgreSQL를 도입하기위해 어떤 차이점이 있을까

 

 

선호도


 

 

Stack Over Flow에서 설문조사한 결과 세계적으로 자주 사용되는 데이터베이스가 어떤것이 있는지 투표를 진행하였다

2022년에는 MySQL이 46퍼센트로 PostgreSQL보다 근소하게 앞서있는것을 확인할수있다

 

점점 대용량 데이터 처리에 중요성을 느끼는 기업들은 MySQL 만으로는 성능을 뽑아낼수 없었는지

PostgreSQL에 사용비중이 커지고있는것을 확인할수있다

 

물론 기업에 도메인에 따라 어느 DB를 사용하는지 차이가있지만 점점 PostgreSQL을 사용하는곳이 많아지는것을 확인할수있다

 

 

특성


 

 

 

둘다 같은 Open Source 이며 세부적으로 처리하는 내용들에 대해서는 차이점이 있는데

대표적으로 MySQL은 거의 대부분에 엔진이 ACID를 지원하지만 지원하지 않는 엔진도 존재하는 반면에

PostgreSQL은 ACID를 완벽하게 지원한다

 

또한 MySQL은 SQL Type은 표준 유형만 지원하지만 PostgreSQL은 배열, hstore 등 다양한 Type을 지원한다

이로인해 복잡한 쿼리같은 경우도 개발자에 능력에따라 쉽고, 빠르게 구현이 가능하다

 

성능적인 측면에서는 아래에 좀더 세부적으로 설명하겠지만 기본적으로 MySQL은 읽기 기능에 좀더 특화되어있고

PostgreSQL은 읽기-쓰기 기능에 특화되어 있다고 볼수있다 추가로 NoSQL도 지원한다

 

그렇다면 기본적으로 많은 기능을 지원하는 PostgreSQL이 더좋냐는 사실 다른 문제라고 볼수있다

결국에는 많은 기능을 지원한다는 것은 그만큼 어느정도 러닝커브가 있는것이며, 단순한 조회, 삽입, 읽기 기능을 수행하는데

굳이 PostgreSQL을 사용하진 않을것이다

 

 

 

성능


 

 

사실 DB마다 특화된 분야가 있으니 성능을 측정하는것은 의미가 없지만 기본적인 데이터베이스 성능 측정은 지표가될수있다

5개의 데이터베이스에 10,000개의 행의 반복 삽입하는 작업을 통해서 가장 적은시간이 걸린것은 PostgreSQL 이였다

 

이는 삽입하는 작업에 경우에는 MySQL 보다 확실히 성능상에서 우위를 가져갔다

그다음은 2,000번의 반복작업을 5번 수행하여 읽기작업을 수행했을때는 PostgreSQL이 우위에 있었다

 

 

 

 

물론 테이블에 따라 인덱스설정 등 추가적인 작업을 통해서 해당 수치는 의미가 없을수 없지만

기본적인 DB성능은 무시할수없다

 

의외였던게 MySQL은 삽입에는 느릴수있겠구나 생각했지만 Tree 구조인 특성에 읽기속도는 빠를줄알았는데 아니였다

DBA에 역량에 따라서 도메인에 맞는 최적화 작업이 들어갈것이기 떄문에 사실 벤치마크 수치는 재미로 보면 좋을것 같다

 


반응형

 

 

 

수정


 

PostgreSQL은 UPDATE시에 내부적으로는 새로운 행이 삽입이 되고 이전데이터는 삭제표시가 된다

즉 Git 형상관리처럼 새로운 데이터로 덮어씌워지는것처럼 보이지만 사실 이전 데이터 기록이 남아있다

 

모든 인덱스에는 최근에 UPDATE된 행의 위치값을 알고있어야 하기때문에 계속해서 갱신된다

이러한 과정때문에 수정시에는 MySQL보다 성능이 떨어지는 것을 확인할수있다

 

 

 

 

병렬처리


 

현재 MySQL은 Query 병렬처리를 지원하지 않고있다

PostgreSQL은 Parallel Query Option을 이용하여 하나의 SQL문을 나누어서 동시에 작업하는 병렬처리기능을 지원한다

 

물론 모든 SQL문에서 지원하진 않고 병렬처리가 가능한 SQL 문장의 종류가 존재한다

(SELECT, UPDATE, INSERT, DELETE, CREATE TABLE 등)

 

 

요약


MySQL은 상대적으로 가볍고, 기본적인 CRUD가 주로 들어간 형태일때 사용하면 좋다

PostgreSQL은 복잡하고 다양하고 복잡한 쿼리를 수행해야할때 사용하면 좋다

오늘날 가장 대중적으로 쓰이는 DBMS는 단연코 MySQL 이라고 할수있다

 

빠른속도와 접근성이 좋기떄문에 공부하는 DBA나 프로젝트에서 데이터관리 목적으로 자주 쓰이곤 한다

데이터가 계속해서 누적될때마다 대량의 데이터 작업은 필연적으로 느려지기 마련이다

 

MySQL에서 제공되는 방식은 대량에 데이터를 처리하기에는 한계가 있었는데

이에 따라 대용량 데이터 처리에 특화되있는 PostgreSQL를 도입하기위해 어떤 차이점이 있을까