저장을 습관화

PosgreSQL과 MySQL의 비교: 주요 차이점 본문

공부/데이터베이스

PosgreSQL과 MySQL의 비교: 주요 차이점

ctrs 2024. 1. 8. 18:36

 

내용 출처: https://www.integrate.io/ko/blog/postgresql-vs-mysql-which-one-is-better-for-your-use-case-ko/

 

PostgreSQL과 MySQL 비교: 주요 차이점

사용 사례에 더 나은 DBMS를 결정하기 위해 MySQL과 PostgreSQL을 비교합니다.

www.integrate.io

 

MySQL과 PostgreSQL은 동일한 기능을 많이 제공하지만, 이 두 RDBMS는 무시할 수 없는 중요한 차이점이 있습니다.

이러한 차이점에 대해 잘모르시는 분들을 위해 수비고 빠르게 개요를 정리했습니다.

  • MySQL은 읽기 전용 명령을 관리하는데 선호됩니다. 동시성이 필요한 경우에는 선호되지 않습니다.
  • PostgreSQL은 읽기-쓰기 작업, 대규모 데이터 셋 및 복잡한 쿼리를 관리하는 경우에 선호됩니다. 그러나 읽기 전용 작업에는 선호되지 않습니다.
  • MySQL은 PostgreSQL보다 기능이 적지만, 덕분에 특히 읽기 전용 쿼리에서 더 가볍고 안정적이며 빠른 처리 속도를 유지할 수 있습니다.
  • PostgreSQL은 처음부터 ACID*를 준수하도록 구축되었으며 동시 트랜잭션(MVCC**)이 필요한 경우에 최적이지만 읽기 전용 작업의 경우에는 속도가 느리고 안정성이 떨어집니다.
  • MySQL은 다양한 유형의 데이터 스토리지 엔진과 호환성이 높습니다. 반면 PostgreSQL은 다양한 NoSQL 형식과 호환성이 높습니다.

ACID와 MVCC에 대한 설명

더보기

ACID* : atomicity, consistency, isolation, and durability(원자성, 일관성, 격리성, 내구성) 트랜잭션 처리에서 ACID는 트랜잭션과 관련된 데이터의 무결성과 신뢰성을 보장하기 위해 트랜잭션이 보유해야 하는 네가지 필수 속성을 나타내는데 사용되는 약어이자 니모닉 장치(기억술)이다.

약어는 일반적으로 MySQL 또는 SQL Server와 관계형 데이터베이스 관리 시스템과 연관되어 있지만 트랜잭션을 처리하는 모든 시스템이나 애플리케이션에 적용될 수 있다.

https://www.techtarget.com/searchdatamanagement/definition/ACID

 

What is ACID (atomicity, consistency, isolation, and durability)? | Definition from TechTarget

Learn why, in transactions, the ACID (atomicity, consistency, isolation, and durability) properties are needed to ensure data integrity and reliability.

www.techtarget.com

 

MVCC** : Multi Version Concurrency Content의 약자로, 동시 접근을 허용하는 DB에서 동시성을 제어하기 위해 사용하는 방법 중 하나이다. MVCC 모델에서 데이터에 접근하는 사용자는 해당 시점에 DB의 snapshot을 읽고, 이 스냅샷 데이터에 대한 변경이 완료될 때(또는 트랜잭션이 완료될 때)까지 만들어진 변경사항은 다른 DB의 사용자가 볼 수 없다.

사용자가 데이터를 업데이트하면 이전의 데이터를 덮어 씌우는 것이 아니라  새로운 버전의 데이터를 이전 버전의 데이터와 비교해서 변경된 내용을 UNDO에 생성한다. 이러한 방식으로 하나의 데이터에 대해 여러 버전의 데이터가 존재하기 되고, 사용자난 마지막 버전의 데이터를 읽게 된다.

 

  • MVCC는 데이터를 읽을때 특정 시점 기준으로 가장 최근에 커밋된 데티어만 읽는다.(MySQL에서는 이를 consistent read, 일관된 읽기라고 부른다.)
  • 데이터의 변화(write) 이력을 관리한다. 그렇기 때문에 MVCC는  추가적인 저장공간을 많이 사용한다.
  • read와 write는 서로 block하지 않기 때문에 Lock-based concurrency control에 비해 더 뛰어난 performance를 낼 수 있다.
  • 오늘날의 RDBMS는 대부분 MVCC 기반으로 동작한다.

https://velog.io/@onejaejae/DB-MVCC

 

[DB] MVCC(다중 버전 동시성 제어)란?

해당 강의를 보고 공부한 내용을 정리하였습니다.이전 글에서는 Lock과 함께 2PL protocol을 살펴보았습니다.해당 개념을 살펴보면서 데이터 전체 처리량에 대한 문제가 발생하였고 이를 해결하기

velog.io

 

PostgreSQL은 풍부한 기능을 제공하여 개발자들로부터 많은 사랑을 받고 있으며,

MySQL은 단순성, 사용 편의성, 안정성으로 인해 더 유용하다고 평가받기도 한다.

 

MySQL을 사용해야 하는 경우

  • 스토리지 엔진의 유연성이 필요할 때
  • 속도와 안정성이 필요할 때: 특정 SQL 기능을 포함하지 않음으로써 MySQL은 속도와 안정성을 우선시하기 위해 가벼운 상태를 유지한다. 특히 동시성이 높은 읽기 전용 기능에서 두드러진다. 반면 부하가 많은 상황에서 복잡한 쿼리를 많이 실행해야 하는 경우에는 PostgresQL이 더 나은 선택일 수 있다.
  • 서버 최적화를 위한 옵션이 필요할 때
  • 가장 사용하기 쉽다.
  • 클라우드 지원 DBMS가 필요할 때
  • MVCC와 ACID 규정 준수가 필요하지만 테이블이 손상될 위험을 감수할 수 있을때
  • 간단한 솔루션이 필요할 때

PostgreSQL을 사용해야 하는 경우

  • ORDBMS가 필요할 때: 객체와 테이블 상속을 정의하여 더 복잡한 데이터 구조로 변환할 수 있다. ORDBMS는 엄격한 관계형 모델과 맞지 않는 데이터를 처리할 때 유용하다.
  • 복잡한 읽기-쓰기 작업을 수행해야 할 때: 유효성 검사가 필요한 데이터를 사용하면서 복잡한 읽기-쓰기 작업을 수행해야 하는 경우 PostgreSQL이 탁월한 선택이다. 하지만 그만큼 속도가 느려질 수 있다.
  • 초대형 데에터베이스를 관리할 때
  • 최상의 MVCC가 필요할 때: 사실상 기업들이 PostgreSQL을 선택하는 가장 큰 이유이다.
  • 최고 수준의 ACID 규정 준수가 필요할 때: PostgreSQL은 데이터 손상을 방지하고 트랜잭션 수준에서 데이터의 무결성을 보존한다.
  • 개발팀에 PostgreSQL을 다룰 기술이 있을 때

결론

복잡한 쿼리와 대규모 데이터베이스를 처리할 수 있는 풍부한 기능을 갖춘 데이터베이스가 필요하다면 확장성을 위한 postgreSQL

설정 및 관리가 쉽고 빠르고 안정적이며, 이해도가 높은 간단한 데이터베이스를 원한다면 MySQL

 

 

정말 필요한 정보만 추려도 이 정도이며 원문은 더욱 자세하니 다시 한번 읽어보도록 하자.

 

 

추가적으로 볼만한 영상 - 코딩애플 개발시 데이터베이스 선택 가이드

'공부 > 데이터베이스' 카테고리의 다른 글

객체 관계 데이터베이스 ORDBMS  (0) 2024.01.08
RDBMS와 ORDBMS  (0) 2024.01.08
SQL - FULL JOIN, SELF JOIN  (0) 2023.12.09
SQL - LEFT JOIN, RIGHT JOIN  (0) 2023.12.09
SQL - INNER JOIN  (0) 2023.12.08