[SQL]PostgreSQL vs Mysql
Intro
DB를 사용할 때 Mysql을 자주 사용했는데, 새로운 DB가 있다는 것을 알게 되었다. 최근에 사용률이 증가하고 있는 Postgre라는 DB를 알아보고 이를 기록한다.
PostgreSQL이란
- PostgreSQL 개념
- 개발자 커뮤니티에서 만들어진 SQL으로, 다른 DBMS보다 기능이 더 많다. 참고 - Postgre의 역사
- 테이블, 열에 대한 정보를 단순히 저장만 하는 것이 아니라, 사용자가 데이터 형식/인덱스 형식/함수형 언어를 정의할 수 있다.
- 본래 데이터 형식 지원 + 사용자 지정 함수도 가능.
- PostgreSQL 특징
- 객체 관계형 데이터베이스 관리 시스템이다.
- Mysql의 경우는 순수 관계형 데이터베이스
- 트랜잭션과 ACID를 지원한다.
- 동시 연결성 높음 : 트랜잭션을 할 때 읽기 잠금을 사용할 필요가 없어 확장성이 높다
- NoSQL 지원
- NoSQL, 다양한 데이터 형식을 지원
- JSON, hstore, XML 등 다양한 데이터 형식을 기본적 지원
- DB 크기에 제한을 두지 않는다.
- MVCC(다중 버전 동시성 제어) 지원
- 복잡한 쿼리, 대규모 데이터베이스를 다룰 수 있는 풍부한 기능이 필요할 경우 PostgreSQL을 사용한다.
- 객체 관계형 데이터베이스 관리 시스템이다.
- Vacuum
- Vacuum이란, Vacuum은 PostgreSQL에만 존재하는 고유 명령어로, 오래된 영역을 재사용 하거나 정리해주는 명령어이다.
- 특징에 명시된 MVCC 기법을 사용하기에, 특정 Row를 추가, 업데이트를 할 경우, 디스크 상의 해당 Row를 물리적으로 업데이트하여 사용하지 않고, 새로운 영역을 할당해서 사용한다.
- 자세한 내용은 여기서 확인!
MySQL
- MySQL은 가장 널리 사용되고 있는 관계형 데이터베이스 관리 시스템이다. (RDBMS)
- 가장 많이 사용하기에, 커뮤니티가 잘 발달되어 있고 구글링을 했을 때도 많은 정보가 있다.
- MySQL은 윈도우, 리눅스 등 다양한 운영체제에서 사용가능하며 Apache, PHP 와 함께 웹 개발에 자주 사용된다.
- MySQL은 매우 빠르고, 안정적이고, 사용하기 쉽다.
코딩 차이점
내용 | Mysql | PostgreSQL |
---|---|---|
대소문자 구분 여부 | 대소문자 구분 X | 대소문자 구분 O |
기본문자 집합, 문자열 | UTF-8로 변환 필요 | UTF-8로 변환 필요 없음.(허용X) |
IF, IFNULL, CASE문 | 모두 사용 가능 | CASE문만 사용가능 IF 대신, coalesce()를 사용함 |
결론
- 복잡한 쿼리, 대규모 데이터베이스를 다룰 수 있는 풍부한 기능이 필요할 경우 PostgreSQL이 선택지가 될 수 있음.
- 대중성, 사용용이, 안정성, 속도 등을 원한다면 MySQL을 사용 ( 최근 NoSQL도 지원)