반응형
안녕하세요. 개발자 Jindory입니다.
오늘은 Oracle과 MySQL의 차이점에 대해서 알아보는 글을 작성해보고자 합니다.
1. Oracle
오라클이란 미국의 오라클 회사에서 제작한 세계 점유율 1위 데이터베이스 관리 시스템이며 현재 유닉스 체제에서 가장 많이 사용되는 DBMS이다.
Oracle 특징/장점
- 관리시스템
- 중앙 집중 방식으로 Administration monitoring이 가능하고, Multiple databases를 튜닝이 가능합니다.
- 다수의 사용자가 동시에 접근이 가능하다.
- 변화관리
- 변경 plan을 작성하고 실제 구현하기 전에 변경 사항의 효과를 볼 수 있다.
- 생산 시스템을 방해하지 않는다.
- 경고
- 오류가 발생하면 설정되어 있는 계정 및 이메일로 연락이 온다.
- 생산 시스템을 방해하지 않는다.
- 분산처리
- DBMS 실팽 컴퓨터 / 서버 역할 컴퓨터 / DB 응용 프로그램 실행 컴퓨터를 다르게 분산처리한다.
- 용량&처리
- 다른 데이터베이스보다 고성능의 트랜잭션을 처리한다.
- Cost 비용을 최소화 하기 위해 테이블과 인덱스를 분석한다.
- 쿼리 최적화 프로그램으로 오라클은 SQL문을 실행하는 가장 효율적인 방법을 선택합니다.
Oracle 단점
- 비용적인 부담이 크다
- 기능이 많아 초보자에게 어렵다
- 높은 지원 하드웨어 사양이 필요하다.
2. MySQL
MySQL은 전세계적으로 가장 널리 사용되고 있는 오픈 소스 데이터베이스이며, MySQL AB사가 개발하여 배포 및 판매하고 있는 데이터베이스 관리툴이다.
MySQL 특징/장점
- 접근성
- 다른 데이터 관리 툴에 비해 구조가 간단하여 사용하기가 매우 쉽다.
- 지원
- 다양한 프로그래밍 언어와 통합할 수 있다.
- 거의 모든 운영체제 사용을 지원한다.
- 유연성
- 유연하고 확장이 가능한 구조이다.
- 가격
- MySQL 데이터베이스는 무료라서 비용적인 부담이 적다.
- 오픈 소스는 무료, 상업용은 유료이다.
- 용량&처리
- MySQL은 오직 1MB의 RAM만 사용할만큼 용량 차지가 적다. 매우 적은 오버헤드를 사용한다.
- 처리 속도가 빠르고 댜용량 데이터 처리에 용이하다.
MySQL 단점
- 복잡한 쿼리는 성능 저하를 발생시킨다.
- 트랜잭션 지원이 완벽하지 않다.
- 사용자정의 함수의 사용이 쉽지 않고 유연하지 않다.
3. 차이점
> 구조적 차이
- Oracle : DB 서버가 통합된 하나의 슽토리지를 공유하는 방식
- MySQL : DB 서버마다 독립적인 스토리지를 할당하는 방식
> 조인 방식의 차이
- Oracle : 중첩 루프 조인, 해시 조인, 소트 머지 조인 방식을 제공
- MySQL : 중첩 루프 조인 방식을 제공
> 확장성의 차이
- Oracle : 별도의 DBMS를 설치해 사용할 수 없음.
- MySQL : 별도의 DBMS를 설치해 사용할수 있음.
> 메모리 사용율의 차이
- Oracle : 메모리 사용율이 커서 최소 수백 MB 이상이 되어야 한다.
- MySQL : 메모리 사용율이 낮아서 1MB 환경에서도 설치가 가능하다.
> 구문의 차이
- Null값 확인 함수
- Oracle : NVL(칼럼명,'대체값')
- MySQL : IFNULL(칼럼명,'대체값')
- 현재 날짜 및 시간 확인 함수
- Oracle : SYSDATE
- MySQL : DATE()
- 날짜 형식 변환
- Oracle : TO_CHAR(SYSDATE,'YYYY-MM-DD')
- MySQL : DATE_FORMAT(NOW(),'%Y-%m-d')
- 요일 변환의 숫자 범위
- Oracle : 일,월,화,수,목,금,토를 1,2,3,4,5,6,7로 인식
- MySQL : 일,월,화,수,목,금,토를 0,1,2,3,4,5,6로 인식
- 문자와 문자 합치는 방법
- Oracle : 문자1||문자2 / CONCAT(문자1,문자2)
- MySQL : CONCAT(문자1,문자2)
- 문자열 자르기
- Oracle : SUBSTR(문자열,시작위치,잘라낼 문자열의 길이)
- MySQL : SUBSTRING(문자열,시작위치,잘라낼 문자열의 길이)
- 형변환 방법
- Oracle
- 문자형
- SELECT CAST( 123 AS VARCHAR(3) FROM DUAL
> '123' - SELECT TO_CHAR(123) FROM DUAL
> '123'
- SELECT CAST( 123 AS VARCHAR(3) FROM DUAL
- 날짜형
- SELECT CAST( 20220413 AS DATE) FROM DUAL
2022-04-13 - SELECT TO_DATE(20220413,'YYYY-MM-DD') FROM DUAL
> 2022-04-13
- SELECT CAST( 20220413 AS DATE) FROM DUAL
- 숫자형
- SELECT CAST( '012405' AS NUMBER(6) ) FROM DUAL
> 12405 - SELECT TO_NUMBER('012405')
> 12405
- SELECT CAST( '012405' AS NUMBER(6) ) FROM DUAL
- 문자형
- MySQL
- 문자형
- SELECT CAST(NOW(), CHAR)
>2022-04-13 00:55:30
- SELECT CAST(NOW(), CHAR)
- 날짜형
- SELECT CAST(20220413,DATE)
> 2022-04-13
- SELECT CAST(20220413,DATE)
- 문자형
- Oracle
- 조건
- Oracle : DECODE(칼럼, 값, True일 때 출력 할 값, False일 경우 출력 할 값)
- MySQL : IF(조건문,True일 경우 출력 할 값,False일 경우 출력 할 값)
- 페이징 처리
- Oracle : ROWNUM BETWEEN 0 AND 10
- MySQL : LIMIT 10
- 시퀀스 사용시 다음 번호 불러오는 방법
- Oracle : 시퀀스명.NEXTVAL
- MySQL : 시퀀스명.CURRVAL
- 가상 테이블
- Oracle : SELECT 1 FROM DUAL
- MySQL : SELECT 1
이렇게 Oracle과 MySQL의 차이점에 대해서 알아봤습니다.
혹시라도 정정할 내용이나 추가적으로 필요하신 정보가 있다면 댓글 남겨주시면 감사하겠습니다.
오늘도 Jindory 블로그에 방문해주셔서 감사합니다.
[참조]
https://velog.io/@alicesykim95/Oracle%EA%B3%BC-MySQL%EC%9D%98-%EC%B0%A8%EC%9D%B4%EC%A0%90
반응형
'데이터베이스 > Database' 카테고리의 다른 글
[Database] 관계형 데이터베이스(SQL)와 비관계형 데이터베이스(NoSQL)의 차이 (0) | 2022.04.25 |
---|---|
[Database] Transaction, 트랜잭션이란? (0) | 2022.04.14 |