데이터베이스

[데이터베이스] Oracle, MySQL, PostgreSQL 차이점

jwKim96 2020. 12. 3. 23:11

https://velog.io/@jisoo1170/Oracle-MySQL-PostgreSQL-차이점은

 

Oracle, MySQL, PostgreSQL 차이점은?

각 DB의 차이점을 알아보자

velog.io

 

1. Oracle (성능 최상, 가격도 최상)

 대규모 데이터베이스에 특화

고성능 트랜잭션 처리 제공

SQL 실행시 가장 효율적인 방법 선택

    (Cost 최소화하기위해 Table, Index 분석하여 최적의 방법으로 수행)

 

 

2. MySQL(성능 준수, 오픈소스)

ㆍtop n개의 레코드 조회시 성능 좋음

ㆍupdate성능이 postgre보다 우수

ㆍNested Loop Join만 지원(Hash Join 미지원..)

    join 대상 테이블의 row를 하나 하나 비교하며 join하는 방식

- 중첩 루프문과 동일한 원리
- 순차적 처리
- 좁은 범위에 유리(반대로 말하면, 대규모 데이터 조회시 기하급수적으로 cost, 처리시간 증가)

ㆍ복잡한 알고리즘 지원하지 않음

ㆍ문자열 비교시, 대소문자 구분하지 않음

ㆍ간단하게 처리하고, 속도를 향상시키는것을 추구함

 

3. PostgreSQL(성능 준수, 오픈소스)

ㆍ다양한 join 지원

    - Nested Loop Join, Hash Join, Sort Merge Join

    - Join 데이터가 많을 때

      ㄴ데이터가 정렬되어 있을 경우 : Sort Merge Join

      ㄴ데이터가 정렬 안되어 있을 경우 : Hash Join

ㆍupdate처리가 느리다. (delete insert 방식)

ㆍ빠른 처리를 위해 CPU를 활용하여 쿼리를 실행함

ㆍ동시성을 효율적으로 처리함.

 

etc. 조인 방식

Sort Merge Join
- 양쪽 테이블의 정렬한 결과를 차례로 스캔하여, 연결고리 조건으로 Merge 시도
- (정렬이 되어있는 경우) Loop Join 보다 훨씬 빨라지는 경우도 있음 
- 랜덤 액세스가 줄어들어 시스템 부하 감소
- 하지만, 정렬되지 않은 대량의 데이터 혹은 중복 데이터가 있을 경우 메모리 사용량이 늘어날 수 있음
- Full Scan 방식

 

 

Hash Join
- 키를 해시값으로 매핑하고, 이를 색인처럼 이용하는 hash bucket을 생성함(Table의 Index는 미사용)
- 랜덤 엑세스가 있지만, Nested Loop 보다는 빠르다(hash table을 이용하기 때문)
- hash bucket을 생성하기 때문에, 많은 메모리를 사용함