목차
탄생 배경
MySQL은
1995년 배포된 오픈소스 DBMS로써 2010년 오라클에 인수된 후 23년 현재까지 8.0 버전까지 배포되었으며 상용 버전과 커뮤니티 버전으로 구분된다.
MariaDB는
MySQL의 소스코드에 기반을 둔 오픈소스 정책을 지향하는 새로운 DBMS로 SQL을 사용하는 개발자 입장에서 현재까지 별 차이는 없다.
두 DBMS는 5.5버전부터 MariaDB가 갈라져나오면서 두 갈래로 나뉘게 된다.
하지만, SQL의 문법이나 실행 계획의 출력 방식은 유사하기에 큰 차이는 없으나 버전에 따라 DB 엔진 레벨에서 제공하는 옵티마이저 기능의 차이는 있는편이다.
상용 RDBMS와의 차이
(참고: 이후 MySQL과 MariaDB의 공통 설명은 MySQL로 통일한다.)
구조적 차이
•
데이터가 저장되는 스토리지 구조 측면에서 큰 차이를 보인다.
오라클 DB는 통합된 하나의 스토리지를 공유(shared everything)
•
공유 스토리지를 사용하기에 어느 DB서버에 접속하여 SQL문을 수행해도 동일한 같은 결과를 출력한다.
일반적인 오라클 DB 구조
MySQL은 물리적인 DB 서버마다 독립적인 스토리지를 할당(shared nothing)
•
독립적인 스토리지 할당에 기반을 두기에 이중화를 위한 클러스터나 복제 구성으로 운영하더라도 보통 마스터-슬레이브 구조이다.
•
여러 대의 DB서버에 접속했을 때 동일한 구문(SELECT, INSERT, DELETE, UPDATE)이 처리되지 않을 수 있다.
•
DB서버마다 각자의 역할이 부여될 수 있다.
•
쿼리 오프로딩을 통해 마스터-슬레이브간 역할을 분리할 수 있다.
MySQL, MariaDB 구조
참고: 쿼리 오프로딩
DB서버의 트랜잭션에서 쓰기 트랜잭션과 읽기 트랜잭션을 분리해 DB처리량을 증가시키는 성능 향상 기법
- 쓰기 트랜잭션: UPDATE, INSERT, DELETE
- 읽기 트랜잭션: SELECT
지원 기능 차이
•
MySQL은
◦
대부분 중첩 루프 조인(nested loop join)방식의 조인을 사용한다.
◦
필요한 DBMS를 설정해 사용할 수 있다.(Plug&Play)
◦
낮은 메모리 요구량을 가지기에 저사양 PC에서도 사용할 수 있다.
•
Oracle은
◦
중첩 루프 조인뿐 아니라 정렬 병합 조인(sort merge join), 해시 조인(hash join)방식도 제공한다.
◦
수백 MB이상의 환경이 제공되야 설치할 수 있다.
MySQL, MariaDB 튜닝의 중요성
MySQL과 MariaDB는 강점과 약점, 기회와 위협이 있다.
무료이고 경량화된 소프트웨어이기에 활용하기도 편하고 유용하지만, 수행 가능한 알고리즘이 중첩 루프 조인만 봐도 알 수 있듯 제한적이기에 성능적으로 불리하다. 대신 스토리지 엔진을 활용할 수 있는 기회가 있다. 이러한 사항들을 SWOT 분석하면 다음과 같이 나오는데, 약점과 기회를 해결하기 위한 SQL 튜닝이 얼마나 중요한지 확인하도록 하자.
MySQL/MariaDB의 SWOT 분석