개발 동아리에서 스프링부트를 사용하여 여러 프로젝트를 진행하면서 MySQL을 주로 사용해왔다. 근데 정작 MySQL을 사용하는 이유와 왜 이 데이터베이스 관리 시스템(DBMS)이 인기가 많은지는 깊게 고민해본적이 없었다.
기술 면접에서 내가 사용한 스택을 물을 때, 정작 기술 숙련도보다 근본적인 이해를 묻는 질문에서 대답을 잘 못한다는 말을 듣고 이번 포스트에서는 MySQL이 가진 장점을 다른 DBMS와 비교하며 정리해보겠다.
먼저 아래 통계포를 보자.

출처 : https://db-engines.com/en/ranking_trend/relational+dbms
여기서 보면, 압도적으로 사용 랭킹이 높은걸 확인할 수 있다.
그러면 도대체 왜 요놈을 많이 쓰는지 알아보자.
MySQL은 오픈 소스 관계형 데이터베이스 관리 시스템(RDBMS)으로, 1995년 스웨덴의 MySQL AB에서 처음 개발되었습니다. 이후 2008년 Sun Microsystems에 인수되었고, 2010년 Oracle이 Sun Microsystems를 인수하면서 현재는 Oracle이 관리하고 있습니다.
MySQL은 비교적 가볍고 빠른 성능을 제공하며, 특히 웹 애플리케이션과 같은 읽기 중심의 환경에서 강점을 보입니다. InnoDB와 MyISAM과 같은 다양한 스토리지 엔진을 지원하며, 사용자의 요구에 맞게 데이터베이스 환경을 최적화할 수 있습니다.
현재 MySQL은 오픈 소스 커뮤니티 버전과 함께 기업용으로 제공되는 상용 버전도 존재하며, 다양한 기업 및 프로젝트에서 널리 활용되고 있습니다.
여기까지가 gpt의 말이었다.
전 포스트에서 말했다 싶이, MySQL은 데이터베이스 그 자체가 아니라 디비를 관리해주는 시스템이다. 우리가 애플리케이션에서 흔히 하는 CRUD 작업들이 모두 애플리케이션 -> DBMS 이런식으로 요청이 이루어진다.
MySQL은 이런한 요청들을 받아서 실제 데이터 파일에 안전하게 접근하고, 트랜잭션을 관리해주고, 여러 명이 동시에 접근해도 충돌 없이 잘 처리되도록 도와주는 "관리자" 역할을 한다.
한마디로 단순히 데이터를 저장하는 게 아니라, 어떻게 저장하고 어떻게 효율적으로 꺼내 쓸지를 잘 조율해주는 아주 좋은 친구이다!
그렇다면 어떤 점 때문에 많은 사람들이 사용을 할까?
여기서 읽기와 쓰기는 당연히 INSERT나 SELECT를 말하는거다.
사실 웹, 앱 어플리케이션에서는 CRUD의 요청이 매우 많은데,
이러처럼 읽기/쓰기가 반복적으로 일어나는 구조에서는 MySQL 이다른 DBMS보다 성능적으로 유리하다.
실제로 MySQL 공식 홈페이지나 여러 성능 테스트 자료에 따르면, 단순 조회 및 삽입 작업에서는 PostgreSQL이나 Oracle보다 낮은 레이턴시를 보여주는 경우가 많다.
여기서 latency는 데이터가 이동하는 데 걸리는 시간, 커밋을 하고 완료까지 이루어지는 시간 정도라고 생각하면 된다
https://www.oracle.com/heatwave/performance-benchmarks/?utm_source=chatgpt.com#query-processing
위 링크인 Oracle에서 발표한 벤치마크 자료에 따르면, MySQL의 확장형 버전인 HeatWave MySQL은 10TB TPC-H 기준으로 총 처리 시간 431초로 경쟁 DBMS보다 압도적으로 빠른 성능을 보여준다!
또한 데이터를 처리할 때 작은 오버헤드를 사용하기 때문에 가볍다고도 볼수 있다.
접근성에 있어서 두가지로 나눠서 얘기해볼수 있다.
물론 상업용은 유료 버전이긴 하지만, 오픈소스는 무료이기에 많은 사람들에게 사랑 받는거 같다.
(데이터베이스 서버 하나당 라이선스 하나가 필요하다고 하네요)
사실 높은 접근성을 말하려면 초보자들이 쉽게 사용 할 수 있어야한다고 생각한다.
Workbench를 사용해봤다면 공감 하겠지만, 비개발자나 DB 초보자도 쉽게 접근할 수 있을 만큼 편하다. 쿼리 작성, 테이블 설계, 데이터 시각화 등을 마우스 클릭만으로도 가능하게 해줘서 SQL을 잘 몰라도 기본적인 데이터베이스 조작이 가능하다!
(이건 다른것들도 그런거같긴한데..)
MySQL은 이름에서도 알수 있듯이 전통적인 관계형 데이터베이스 모델을 기반으로 한다.
즉, 명확한 테이블 구조와 스키마를 갖고 있어서 외래키 등 데이터 간의 관계를 명확하게 정의할 수 있고, 데이터 무결성을 보장하기 쉽다.
근데 여기까지만 들으면 수평적 확장이 가능한 스키마리스가 더 좋은거 아닌가? 라고 생각할 수 있지만, 오히려 서비스가 커지거나 복잡해질수록 스키마가 명확한 관계형 구조는 협업이나 유지보수에 더 유하다고 볼 수 있다.
결론적으로 구조적인 장점을 가려자려면 MySQL이 ERD 기반 설계 툴과도 잘 맞고, 설계대로 구조를 반영해서 안정적으로 운영할 수 있기에 장점으로 볼 수 있다.
또한 MySQL은 기본적인 관계형 모델에만 갇혀 있게 아니라, JSON 타입을 지원해서 반정형 데이터도 저장할 수 있고, 필요하다면 동적으로 구조를 다루는 것도 가능하다.

물론 이외의 장점들을 나열하면 끝도 없지만, 이제 다른 DBMS와 비교해보자.
몽고디비라고 많이 들어봤을거다. 친한 친구의 프로젝트 팀에서는 몽고디비를 많이 사용한다고 했다.
위 장점에서 말한 바와 같이 MySQL은 전통적인 관계형 데이터베이스라서, 테이블 기반으로 데이터를 저장하고 스키마가 명확하게 정의되어 있다.
반면 MongoDB는 문서지향 DB로, JSON 형태의 데이터를 "문서단위"로 저장한다. 그래서 사실 MongoDB가 휠씬 스키마가 자유롭고, 필드 구조가 유동적인 데이터에 더 잘 맞다고 볼 수 있다!
이 점은 어떤 성격의 프로젝트냐에 따라 선택하면 될거같다.
MongoDB는 스키마가 없기에, 데이터를 설계하면서 자유롭게 필드를 추가하거나 제거할 수 있다. (이게 더 찾아보니까 엄청난 장점이라고 하네요)
그렇기에 자주 구조가 바뀌는 데이터에는 매우 유리하다.
하지만 이런 유연함이 오히려 데이터 무결성을 해칠 위험도 있고, MySQL의 경우 구조가 고정되어 안정적이고 데이터의 일관성을 유지하기에는 더 쉽다.
MongoDB는 수평 확장이 쉬워서 대용량 데이터를 다룰 때 훨씬 편하다.
특히 로그 수집, 센서 데이터, 채팅 기록처럼 형태가 자유로운 데이터를 빠르게 넣고 조회하는 데 유리하다.
반면 MySQL은 정형 데이터를 다루는 데 강하고, OLTP 환경에서는 높은 안정성과 성능을 보여준다.
참고 문헌 : https://velog.io/@wkdwoo/MongoDB-vs.-MySQL
MySQL은 복잡한 트랜잭션 처리에 강한 반면, MongoDB는 최근에야 트랜잭션을 지원하기 시작했다고 한다.
따라서 금융, 쇼핑몰처럼 정확하고 안전한 트랜잭션 처리가 중요한 시스템에서는 여전히 MySQL이 선호되는 측면이 있다.
MySQL이 더 나은 경우
데이터 구조가 명확하고 정형화 시킬때
외래 키, 제약조건 같은 데이터 무결성이 중요한 경우
트랜잭션이 많이 발생하는 시스템
MongoDB가 더 나은 경우
데이터 구조가 자주 바뀌거나 유동적인 경우
빠른 개발, 프로토타이핑이 필요한 프로젝트
대용량 비정형 데이터를 다뤄야 하는 경우
다음으로는 데이터베이스 수업을 들을 때 사용했던 PostgreSQL이다. 개인적으로 써보니까 그닥이었던 기억이..
위에서 말한 첫번째 장점 처럼 단순한 CRUD 작업이나 요청 처리 속도는 MySQL이 휠씬 빠르다고 한다!
하지만 복잡한 쿼리나 대용량 트랜잭션은 PostgreSQL이 더 안정적이고 유리하다.
PostgreSQL은 기본적으로 완전한 ACID를 지원하는데, MySQL은 InnoDB 스토리지 엔진을 써야 제대로 지원이 된다. (오오 그렇구만)
PostgreSQL은 JSON, XML, GIS 같은 다양한 데이터 타입을 지원하고, 사용자 정의 타입이나 함수도 만들 수 있어서 확장성이 더 좋다고 한다.
MySQL이 더 나은 경우
트래픽이 많은 웹 애플리케이션
단순한 CRUD 중심의 구조
빠른 읽기/쓰기 작업이 중요한 서비스
사실 MySQL이 오라클거지만, 비교해자면 다음과 같다.
MySQL은 커뮤니티 버전 기준으로 무료로 사용할 수 있지만, Oracle DB는 라이선스 비용이 굉장히 높다. 실제로 중소기업이나 스타트업에서는 비용 부담 때문에 Oracle보다는 MySQL을 선택하는 경우가 많다.
Oracle DB는 비싼 만큼 고급 기능이 많다.
예를 들어 고도화된 파티셔닝, 병렬 처리, 고가용성 기능, 자동화된 백업 및 복구 시스템 등은 Oracle이 훨씬 앞서 있다고 한다. 그래서 대규모 금융, 통신, 공공기관 시스템에서는 여전히 Oracle이 많이 쓰인다.
참고 문헌 : https://www.purestorage.com/kr/knowledge/what-is-oracle-database.html
복잡한 트랜잭션 처리나 초대형 시스템에서는 Oracle DB가 훨씬 안정적이고 튼튼한 구조다. 근데 MySQL도 InnoDB 스토리지 엔진을 사용하면 트랜잭션 처리나 동시성 제어에서 꽤 좋은 퍼포먼스를 낼수 있다.
Oracle은 설정이나 운영이 꽤 복잡한 편이다. 사실 전문가나 기업용으로 나온 DBMS이니 가격이나 진입장벽을 생각하면 MySQL을 쓰는게 낫다.
MySQL이 더 나은 경우
돈이 없는 팀들
단순한 웹 애플리케이션이나 관리 시스템
빠르게 개발하고 배포해야 하는 MVP 단계의 서비스
Oracle DB가 더 나은 경우
수많은 동시 사용자와 복잡한 트랜잭션을 처리하는 대형 시스템
보안, 고가용성, 성능 최적화가 중요한 엔터프라이즈 환경
알고 쓰자!
무작정 좋다고 따라 쓰는거 만큼 위험한게 없다고 했다...