버전 확인 방법-1
show variables like 'version';
결과값
버전 확인 방법-2
SELECT @@version;
결과값
1.1.1 부각 배경
- MySQL은 상용 버전, 무료 버전이 있다
- MariaDB는 완전한 오픈소스 소프트웨어
1.1.2 DB 엔진 영향력
- U2L(Unix to Linux), U2C(Unix to Cloud) 흐름을 타고 오픈소스 데이터베이스로 마이그레이션이 주류를 이룬다.
1.2 상용 RDBMS와의 차이점
1.2.1 구조적 차이(MySQL, MariaDB 와 Oracle 간의 차이 중심)
기본적으로 데이터가 저장되는 스토리지 구조 측면에서 큰 차이
- 오라클DB는 통합된 스토리지 하나를 공유하여 사용하는 방식 (Shared everything) → 사용자가 어느 DB 서버에 접속하더라도 같은 결과를 출력할 수 있다.
- MySQL은 물리적인 DB서버마다 독립적으로 스토리지를 할당하는 방식(Shared nothing) → 클러스터나 복제 구성으로 운영하더라도 보통은 마스터-슬레이브 구조가 대부분. 마스터 노드는 쓰기/읽기는 모두 처리, 슬레이브 노드는 읽기 처리만.
쿼리 오프로딩: DB 서버의 트랜잭션에서 쓰기 트랜잭션과 읽기 트랜잭션을 분리하여 DB 처리량을 증가시키는 성능 향상 기법
- 쓰기 트랜잭션: UPDATE, INSERT, DELETE
- 읽기 트랜잭션: SELECT
1.2.2 지원 기능 차이
조인 알고리즘 차이
- MySQL은 대부분 중첩 루프 조인(nested loop join) 방식
- 오라클은 중첩 루프 조인 방식뿐만 아니라 정렬 병합 조인(sort merge join)과 해시 조인(hash join)방식도 제공
MySQL은 데이터를 저장하는 스토리지 엔진이라는 개념을 포함하므로 오픈소스 DBMS를 바로 꽂아서 사용할 수 있는 확장성이 특징 (DBMS의 플러그 앤 플레이 기능)
1.2.3 SQL 구문 차이
Null 대체
MySQL
SELECT IFNULL(col1, A) col 1
FROM tab;
Oracle
SELECT NVL(col1, A) col1
FROM tab;
페이징 처리
MySQL
SELECT col1
FROM tab
LIMIT 5;
Oracle
SELECT col1
FROM tab
WHERE ROWNUM <= 5;
현재 날짜
MySQL
SELECT NOW() AS date;
Oracle
SELECT SYSDATE AS date
FROM dual;
조건문
MySQL
SELECT IF(col1 = 'A', 'apple', '-') AS col1
FROM tab;
Oracle
SELECT DECODE(col1, 'A', 'apple', '-') AS col1
FROM tab;
날짜 형식
MySQL
SELECT DATE_FORMAT(NOW(), '%Y%m%d %H%i%s') AS date;
Oracle
SELECT TO_CHAR(SYSDATE, 'YYYYMMDD HH24MISS') AS date
FROM DUAL;
자동 증갓값
MariaDB와 오라클에서는 시퀀스라는 오브젝트를 활용
- 먼저 CREATE SEQUENCE 문으로 시퀀스 오브젝트를 생성한 뒤,
- SELECT 시퀀스명.nextval FROM dual; 구문으로 신규 데이터의 시퀀스 숫자를 가져온다.
MySQL에서는 특정 열의 속성으로 auto_increment를 명시하거나 시퀀스 오브젝트를 활용할 수 있다.
- CREATE SEQUENCE
- SELECT nextval (시퀀스명);
문자 결합
MySQL
SELECT CONCAT('A', 'B') TEXT;
Oracle
SELECT 'A'||'B' TEXT
FROM DUAL;
SELECT CONCAT('A', 'B') TEXT;
문자 추출
MySQL
SELECT SUBSTRING('ABCDE', 2, 3) AS sub_string;
해당 문자열의 2번째 글자부터 3개를 가져온다.
결과값: BCD
Oracle
SELECT SUBSTR('ABCDE', 2, 3) AS sub_string
FROM DUAL;
결과값: BCD
'CS > DB' 카테고리의 다른 글
시간 기준 변경 (LocalTimeZone → UTC) (0) | 2023.08.28 |
---|