Search
Duplicate

01. MySQL, MariaDB

목차

탄생 배경

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 분석