테마
MySQL 소개
대표적인 오픈소스 RDBMS(Relational Database Management System, 관계형 데이터베이스 관리 시스템)다. 스웨덴 회사 MySQL AB가 만들었고, Sun을 거쳐 지금은 Oracle이 소유한다. 현재는 두 트랙으로 배포된다. 안정성 중심의 8.4 LTS(Long-Term Support, 장기 지원)와 새 기능 중심의 Innovation 릴리스(innovation release)1다.
MySQL이란
- 관계형 DBMS(Database Management System, 데이터베이스 관리 시스템)다. 데이터를 행과 열로 된 테이블에 담고 SQL로 다룬다. SQL 표준을 따르되, MySQL에만 있는 문법과 동작인 방언(dialect)도 있다.
- 듀얼 라이선싱(dual licensing): 같은 소프트웨어를 두 가지 라이선스로 낸다. 하나는 GPL(GNU General Public License) 오픈소스이고, 다른 하나는 상용(엔터프라이즈) 에디션이다. 커뮤니티 에디션으로 시작해 필요하면 상용 기능으로 간다. 요청을 적은 스레드로 나눠 처리하는 스레드 풀(thread pool), 누가 무엇을 했는지 남기는 감사(audit) 기능, 위험한 SQL을 막는 방화벽 등이 여기에 속한다.
- MariaDB는 MySQL 창시자가 MySQL 소스를 복사해 따로 개발을 시작한 포크(fork) 형제다. 초반엔 MySQL 자리에 그대로 바꿔 끼울 수 있을 만큼 호환됐지만, MariaDB가 10.x 버전으로 따로 가면서 기능 차이가 벌어졌고 MySQL 8.0 이후로는 서로 다른 제품으로 봐야 한다.
왜 MySQL인가
- 생태계: 자료·인력·도구가 폭넓고 주요 언어·클라우드에서 지원이 성숙하다.
- InnoDB 기본 전환: 5.5부터 기본 스토리지 엔진(storage engine)이 MyISAM에서 InnoDB로 바뀌었다. 그 뒤로 트랜잭션(transaction)과 장애 복구를 쓰는 것이 정석이 됐다.
- 기능 폭: 복제(replication), 파티셔닝(partitioning), JSON, 윈도우 함수(window function), CTE(Common Table Expression, 공통 테이블 식)까지 지원한다. 단순 LAMP(Linux·Apache·MySQL·PHP)용으로만 보는 것은 오래된 인식이다.
- 운영 난이도: 설치·복제·백업이 가볍다. 작은 팀이 굴리기 좋다.
반대로 대량 데이터를 집계하는 OLAP(Online Analytical Processing, 온라인 분석 처리) 같은 대규모 분석에는, 데이터를 열 단위로 저장하는 칼럼형(columnar) 엔진이나 여러 서버에 나눠 처리하는 분산 분석 엔진이 더 잘 맞을 수 있다. 제품 이름보다 트랜잭션·쿼리 패턴·운영 경험을 기준으로 선택한다.
면접 포인트
- "MySQL과 MariaDB의 차이?" → 포크 형제, 8.0 이후 분기. 호환을 맹신하지 않는다.
- "왜 MySQL을 써요?" → 생태계·운영·InnoDB. 근거 있게 한 줄.
- "8.0의 변화?" → 데이터 딕셔너리(data dictionary) 통합·윈도우 함수·CTE·내림차순 인덱스(descending index)·역할(role). 현재 운영 버전은 8.4 LTS 같은 지원 트랙까지 구분한다.
참고
LTS 사이에 짧은 주기로 나오는 버전. 새 기능이 먼저 들어오는 대신 지원 기간이 짧다. ↩︎
