본문 바로가기
넓고 얕은 데이터베이스 지식/RDBMS

PostgreSQL과 MySQL의 비교 정리

by 황원용 2023. 4. 28.
728x90

PostgreSQL과 MySQL의 주요 차이점

PostgreSQL

  • 복잡한 쿼리와 대규모 데이터베이스를 다룰 수 있는 기능이 풍부한 데이터베이스이다.
  • 테이블 상속, 함수 오버로딩 등의 기능을 갖춘 객체 관계형 데이터베이스(ORDBMS)이다.

 

MySQL

  • 설치와 관리가 비교적 쉽고, 빠르고, 신뢰할 수 있고, 쉽게 파악할 수 있는 간단한 데이터베이스이다.
  • 순수 관계형 데이터베이스(RDBMS)이다.

 

 

PostgreSQL의 개요

30년 이상 활발하게 개발된 오픈소스 객체 관계형 데이터베이스 시스템이다. 포스트그레스큐엘이라고 발음한다고 한다. 정수, 문자열, 날짜, 타임스탬프 및 바이너리 객체를 포함한 광범위한 데이터 유형을 지원한다. PostgreSQL에는 사용자 정의 함수 및 저장 프로시저에 대한 지원도 포함되어 있다. PostgreSQL은 웹 애플리케이션에 널리 사용되며 확장성 덕분에 엔터프라이즈 애플리케이션에 적합하다.

 

 복잡한 대량의 데이터 작업을 수행하는 데 적합한 솔루션으로 인식되고 있다. 이유는 PostgreSQL이 특수한 데이터베이스 상황 처리에 우수하기 때문이다. PostgreSQL은 다른 데이터베이스 관리 시스템들보다 기능이 많으며 카탈로그 기반 작업이므로 확장이 가능하다. 즉, 테이블과 열에 대한 정보를 단순히 저장만 하지 않고 사용자가 데이터 형식, 인덱스 형식, 함수형 언어를 정의할 수 있다. 

 

 차별화하는 추가 포인트는 객체 관계형, ACID 호환, 높은 동시성 및 NoSQL 지원이 있다.

 

 

MySQL의 개요

 오픈소스 관계형 데이터베이스 관리 시스템이다. 세계에서 가장 많이 사용되고 있으며 안정적이고 강력한 데이터 스토리지 기능을 제공하고 있다. 강력한 데이터 보안기능이 있고 숫자, 날짜/시간, 문자, JSON, 부울 및 열거를 포함한 광범위한 데이터 유형을 지원한다.

 

 

비교표

요소 PostgreSQL MySQL
아키텍처 객체 관계형; 멀티 프로세스 관계형; 단일 프로세스
지원하는 데이터 타입
숫자 (Numeric)
날짜/시간 (Date/time)
문자열 (Character)
JSON
부울 (Boolean)
열거형 (Enumerated)
XML
기하 (Geometric)
배열 (Arrays)
범위 (Ranges)
네트워크 주소 (Network address)
HSTOREComposite
숫자 (Numeric)
날짜/시간 (Date/time)
문자열 (Character)
JSON
공간 (Spatial)
지원하는 인덱스
B-tree
Hash
GiST
SP-GiST
GIN
BRIN
B-tree
Hash
R-tree
역 인덱스 (Inverted indexes)
보안 많은 양의 읽기 및 쓰기를 잘 처리합니다. 많은 양의 읽기를 잘 처리합니다.
성능
액세스 컨트롤
복수의 암호화 옵션
액세스 컨트롤
암호화 옵션
테크니컬 서포트
커뮤니티 서포트
사설 외부업체를 통한 유상 서포트가 있음
커뮤니티 서포트
사설 외부업체를 통한 유상 서포트가 있음
코딩
대소문자 구분
UTF-8로 변환할 필요가 없음 허용되지 않음
IF 및 IFNULL 문을 사용할 수 없고
대신 CASE 문을 사용해야한다.
대소문자 구분하지 않음
UTF-8로 변환해야 함
IF 및 IFNULL 문을 사용할 수 있다.

 

 

개발자가 PostgreSQL을 선택하는 이유

단순히 RDBMS가 아닌 ORDBMS이다.

  •  객체지향 프로그래밍과 관계/절차 지향 프로그래밍 사이를 연결한다. 따라서 객체 및 테이블 상속을 정의할 수 있으므로 데이터 구조가 더 복잡해진다.

 

복잡한 쿼리에 탁월하다.

  •  유효성 검사가 필요한 데이터를 사용하면서 복잡한 읽기-쓰기 작업을 수행해야 하는 경우 PostgreSQL이 좋다. 그러나, 읽기 전용 작업을 처리할 때는 속도가 느려질 수 있다.

 

NoSQL 및 다양한 데이터 형식 지원

  •  JSON, hstore, SML 등 매우 다양한 데이터 형식을 기본적으로 지원한다. 사용자는 본래의 데이터 형식을 정의하는 것은 물론이고 사용자 지정 함수도 설정할 수 있다.

 

초대형 데이터베이스 관리용

  •  PostgreSQL은 데이터베이스의 크기에 제한을 두지 않는다. 

 

다중 버전 동시성제어(MVCC)

  •  많은 기업에서 PostgreSQL을 선택하는 중요한 이유 중 하나이다. MVCC를 통해 데이터를 읽는 사람과 작성하는 사람이 서로 통신하여 동시에 데이터베이스를 관리할 수 있다. 따라서 데이터와 통신해야 할 때마다 읽기-쓰기 잠금을 할 필요가 없으므로 효율성이 향상된다.  MVCC는 이것을 "스냅샷 격리"(Oracle에서 지칭하는 방법)를 통해 구현한다.

 

ACID 준수

  •  데이터 오염을 방지하고 트랜잭션 수준에서 데이터 무결성을 보존한다.

 

 

개발자가 MySQL을 선택하는 이유

고도의 유연성 및 확장성

  •  MySQL을 사용하면 스토리지 엔진에 대한 선택의 폭이 커진다.

 

속도 및 안전성에 집중

  •  특정 SQL 기능을 포함하지 않음으로써 속도와 안전성에 지속적으로 우선순위를 둔다. MySQL의 속도는 고도의 동시 읽기 전용 기능에서 두드러진다. 그러나, 부하가 많은 상태에서 복잡한 쿼리를 대량으로 실행해야 한다면 PostfreSQL이 더 나은 선택이 될 수 있다.

 

서버 최적화를 위한 옵션

  •  sort_buffer_size, read_buffer_size, max_allowed_packet 등 변수를 조정하여 MySQL 서버를 수정 및 최적화하는 옵션을 많이 제공한다.

 

사용의 용이성 및 대중성

  •  MySQL이 널리 사용된다는 것은 광범위한 MySQL 관련 자료를 쉽게 구할 수 있다.

 

 

 

참고

https://www.integrate.io/ko/blog/postgresql-vs-mysql-the-critical-differences-ko/

 

 

 

 

 

728x90