1.1 현황
1.2 사용 RDBMS와의 차이점
1.2.1 구조적 차이
| 오라클 | MySQL | |
|---|---|---|
| 스토리지 구조(다중화 경우) | 통합된 스토리지 하나를 공유 | 물리적인 DB서버마다 독립적 스토리지 할당. |
| 어느 DB 서버에 접속해 쿼리날려도 같은 결과 출력 | 이중화를 위한 클러스터나 복제 구성으로 운영해도 마스터 - 슬레이브 구조가 대부분 | |
| 마스터 - 마스터 있지만 적은 사례 | ||
| 마스터: 쓰기/읽기 슬레이브: 읽기 | ||
| 여러대 DB 서버 접속해도 동일 구문 처리 안될수도, 각자의 역할 부여될 수 있음 | ||
| 마스터(쓰기전용)과 슬레이브(읽기전용)의 위치를 파악하고 쿼리 튜팅 중요 |


쿼리 오프로딩 트랜잭션에서 쓰기 트랜잭션과 읽기 트랜잭션을 분리하여 DB 처리량을 증가시키는 성능 향상 기법
1.2.2 지원 기능 차이
조인 알고리즘 기능 차이
- MySQL
- 중첩 루프 조인
- 8.0.18 부터 제약적으로 해시 조인 제공하지만 여전히 중첩 루프 조인
- Oracle
- 중첩 루프 조인
- 정렬 병합 조인
- 해시 조인
스토리지 엔진 개념(필요한 DBMS 사용 가능)
- MySQL의 개념
- 다른 오픈소스 DBMS도 꽂아 사용할 수 있는 확장성
- DBMS plug & play
리소스 사용 저렴
- MySQL이 메모리 사용률 상대적 낮음
- 최소 스펙
- 1MB vs 수백MB
1.2.3 SQL 구문 차이
Null 대체
MySQL/MariaDB
IFNULL (열 명, '대쳇값')
오라클
NVL (열 명, '대쳇값')
페이징 처리
MySQL/MariaDB
LIMIT 숫자
오라클
ROWNUM <= 숫자
현재 날짜, 조건문, 날짜 형식, 자동 증갓값, 문자 결합, 문자 추출 이렇게도 소개해주는데 책을 참고할 것. 굳이 노트에 적을 필요는 없을거 같다.
1.3 MySQL과 MariaDB 튜닝의 중요성
MySQL과 MariaDB 내부를 들여다 보면 기능적인 제약사항이 있다. 대다수의 SQL 문이 중첩 루프 조인 알고리즘으로 수행되고, 상용 DBMS와는 다르게 수행된 쿼리 결과가 메모리에 적재되는 캐시 기능에 한계가 있으므로(데이터가 변경되면 캐시된 내용을 모두 삭제) 일반적인 쿼리 작성 및 튜닝이 통하지 않을 수 있다.
따라서 DBMS가 제공하는 기능 더 자세히 알아야 하며, 제공되는 실행 계획 정보를 해석하고 문제점을 인지하거나 대응할 수 있는 능력을 갖춘 뒤 쿼리 튜닝을 진행햐야 할 것이다.
정리하자면 MySQL과 MariaDB는 다음과 같은 강점, 약점, 기회와 위협이 존재한다.
- 무료
- 경량화된 소프트웨어라서 활용 편리 및 유용
- 수행 가능한 알고리즘 적어 성능적 불리
- 다양한 스토리지 엔진 적극적으로 사용할 수 있는 기회 존재
- 오픈소스 정책 변동에 따른 위협
