Today I Learned
SQL 튜닝과 관련된 책을 사서 공부하는 중이다.
거의 풀스택으로 일하고 있는데 SQL을 다룰 일이 코드만큼 많다.
조금 더 스탭업하기 위해 팀장님께 추천받은 책으로 앞으로 쭉 공부해서 정리해보려한다.
RDBMS 비교
1. MySQL
특징
- 개발사: 오라클(Oracle) 소유의 오픈소스 DBMS
- 엔진 구조: 다중 스토리지 엔진(InnoDB, MyISAM 등) 지원
- 확장성: 클러스터링(MySQL Cluster), 레플리케이션(비동기·반동기) 기능 제공
장점
- 높은 가용성: InnoDB의 ACID 준수 및 트랜잭션 지원으로 안정성 높음
- 쉬운 사용성: 설치·운영이 간단하고, 방대한 문서와 커뮤니티 지원
- 성능 최적화: 쿼리 캐시, 인덱스 힌트 등 다양한 튜닝 옵션 제공
단점
- 기능 제한: PostgreSQL 대비 JSON·GIS 등 고급 기능이 부족함
- 라이선스 리스크: 오라클 정책 변경 시 오픈소스 커뮤니티에 영향 발생 가능
- 쓰기 성능 병목: 동시 쓰기 작업이 많을 경우 성능 저하 발생할 수 있음
2. MariaDB
특징
- 개발사: MySQL 창시자들이 오라클 인수 이후 포크하여 개발
- 라이선스: 완전한 오픈소스(GPL) 유지
- 스토리지 엔진: MyRocks, Aria, ColumnStore 등 고성능·분석용 엔진 추가
- 호환성: MySQL과 높은 호환성을 유지하여 마이그레이션 용이
장점
- 성능 향상: 쓰기 집중 워크로드에 최적화된 MyRocks 엔진으로 IO 효율 개선
- 오픈소스 확장: 커뮤니티 주도 기능 추가가 활발하며, 플러그인 구조로 확장성 우수
- 라이선스 안정성: 오라클 의존성 제거로 장기적 오픈소스 보장
단점
- 커뮤니티 규모: MySQL에 비해 사용자·기여자 수가 상대적으로 적음
- 기업 지원: 오라클 지원이 아닌 MariaDB 재단 및 상용 지원 옵션에 의존
- 버전 호환성 이슈: 일부 오래된 MySQL 기능이 완벽히 동작하지 않을 수 있음
3. PostgreSQL
특징
- 개발사: 커뮤니티 주도 오픈소스 프로젝트
- 라이선스: PostgreSQL 라이선스(유사 BSD)로 상업적 이용에 제약 없음
- 확장성: 확장형 타입·함수·언어 지원, 플러그인으로 기능 추가 용이
- 표준 준수: SQL 표준을 엄격히 준수하며, 고급 트랜잭션 격리 수준 제공
장점
- 고급 기능: JSONB, PostGIS, 논리 복제 등 다양한 내장 기능 제공
- 안정성·일관성: MVCC 구조로 동시성 제어 우수, 대용량 데이터 처리에 강함
- 확장성: 사용자 정의 타입·인덱스·함수 등을 통해 맞춤형 DB 구축 가능
단점
- 운영 복잡도: 튜닝 파라미터가 많아 초보자에게 학습 곡선이 높음
- 쓰기 성능: 쓰기 작업이 많을 때 WAL(Write-Ahead Logging)로 인한 오버헤드 발생
- 상용 지원: EnterpriseDB 등 별도 상용 솔루션 이용 시 비용 발생
4. Oracle Database
특징
- 개발사: 오라클(Oracle Corporation)에서 개발·유지
- 라이선스: 상용 라이선스만 제공하며, 에디션(Express, Standard, Enterprise)별 기능 차별화
- 아키텍처: 멀티테넌트(Pluggable Database), RAC(Real Application Clusters)로 고가용성 보장
- 보안: 데이터 마스킹, 투명 데이터 암호화, 감사 기능 등 엔터프라이즈급 보안 제공
장점
- 기업용 기능: 대규모 트랜잭션·분산 환경에 최적화된 성능·확장성 제공
- 강력한 지원: 오라클의 전세계적 기술 지원 및 에코시스템 활용 가능
- 고가용성: RAC, Data Guard 등으로 무중단 운영 보장
단점
- 높은 비용: 라이선스 및 유지보수 비용이 매우 높음
- 복잡성: 설치·설정·운영이 복잡하며, 전문 DBA 필요
- 폐쇄형 생태계: 오픈소스 연동 시 제한적이며, 벤더 종속 위험이 있음
5. 비교 요약
항목 | MySQL | MariaDB | PostgreSQL | Oracle Database |
---|
라이선스 | GPL/상용 | GPL | PostgreSQL 라이선스 | 상용 |
주요 특징 | 다중 엔진, 쉬운 사용 | MyRocks, 오픈소스 확장 | JSONB, PostGIS, 확장형 | RAC, Pluggable DB |
장점 | 사용·튜닝 용이 | 성능·라이선스 안정 | 고급 기능·안정성 | 기업용 기능·지원 |
단점 | 기능 제한 | 커뮤니티 규모 작음 | 튜닝 복잡 | 비용·복잡성 높음 |
결론
- 소규모 웹 서비스: MySQL 또는 MariaDB 추천
- 데이터 분석·공간 데이터: PostgreSQL 적합
- 미션 크리티컬·대규모 트랜잭션: Oracle Database 고려