■ 병렬처리가 무엇인가?
SQL 문이 수행해야 할 작업범위를 여러개의 작은 단위로
나누어 여러 프로세서가 동시에 처리하는 것을 말한다.
*병렬처리
1. 하나의 서버내에서의 병렬처리 ----> 오라클
2. 2~4 대의 서버에서의 병렬처리 ----> 오라클 RAC
***서버는 컴퓨터라고 생각하면 편함***
3. 여러대의 서버에서 각각 병렬처리--> 하둡
하둡을 이용하게 되면 분산 컴퓨팅 방식을 사용해서
기존 데이터 분석방식으로는 상상도 못했던 성과를 보여준다.
예:
2008년 뉴욕 타임즈 130년 분량의 신문기사 1100만 페이지를
아마존 하둡을 이용해서 하루만에 PDF 로 변환하는데
성공했다. 이 때 소요된 비용이 200만원에 불과했다.
하둡을 이용하지 않으면 14년이 소요되는 엄청난 작업량이다.
(POINT :병 렬 처 리)
■ 병렬 DML 작업
* insert 문의 성능을 높이기 위한 방법
(high water mark 위로 data를 입력하는 명령어)
*append 힌트 : high water mark 위로 데이터를 입력하겠다.
*parallel 힌트 : high water mark 위로 데이터를 입력하는데
병렬구조로 입력하겠다.
(짝꿍: alter session enable parallel dml;)
노란색에 data 를 입력.
HWM = high water mark
create table emp302
as
select *
from emp
where 1=2;
insert into emp302
select *
from emp;
select * from emp302;
delete from emp302;
commit;
---------↑------------
여기까지가 일반적으로 데이터 넣는 방법.
이제 구조만 남기고 append로 insert 한다.
↓
*high water mark 위로 데이터 입력하는 방법
insert /*+ append */ into emp302
select *
from emp;
commit;
select * from emp302;
1. append 힌트: high water mark 위로 데이터를 입력하겠다.
설명: 저장 공간 낭비는 생기지만 빨리 insert 할 수 있다.
더 빨리 insert 할 수 있는 방법
2.parallel 힌트: high water mark 위로 데이터를 입력하는데
병렬로 입력하겠다.
(짝꿍: alter session enable parallel dml;)
--------------------------------
다시 날리고
delete from emp302;
commit;
----------↓ 병렬로 입력하겠다.
alter session enable parallel dml;
insert /*+ parallel(e3, 4) */ into emp302 e3
select * from emp;
**parallel 안에 컴마는 써도되고
안써도 되고 상관없음.
commit;
select * from emp302;
문제99. (오늘의 마지막 문제)
sales테이블의 데이터를 sales 테이블의 구조만 가지고 있는
slaes500 테이블에 입력할 때
병렬로 입력했을 때(parallel) 와
병렬이 아닌 serial 로 입력했을 때(append)와 속도 차이를 확인하시오
create table sales
as
select * from sh.sales;
select count(*) from sales;
-----------------------------------------------------
create table sales500
as
select *
from sales
where 1=2;
append
↓
insert /*+ append */ into sales500
select * from sales;
commit;
set timing on
select * from sales500;
다시 지우고
delete from table sales500;
안먹히면
truncate table sales500;
commit;
parallel
↓
alter session enable parallel dml; <<병렬로 insert 한다.
insert /*+ parallel(s5, 4) */ into sales500 s5
select * from sales;
**parallel 안에 컴마는 써도되고
안써도 되고 상관없음.
commit;
******commit 을 안하면 되질 않는다오오오******
set timing on
select * from sales500;
'sql_tuning' 카테고리의 다른 글
Section2. 오라클 아키텍처 개요 (0) | 2023.10.29 |
---|---|
7. 기타 튜닝 방법들 (0) | 2019.04.02 |
5. 파티셔닝 (0) | 2019.04.02 |
4. 서브쿼리 튜닝 (0) | 2019.04.02 |
3. 조인 튜닝 (0) | 2019.04.02 |