본문 바로가기
스터디북

[10/21] Direct Path Insert?

by 파이어볼러 2015. 10. 21.

http://www.dator.co.kr/enfant/245210 참조


SGA의 buffer cache를 거치지 않고 직접 oracle data를 구성하고 입력함


Direct-Path INSERT 유형


1) Serial Direct-Load Insert

2) Parallel Direct-Load Insert into a nonpartitioned table

3) Parallel Direct-Load Insert into a partitioned table


Direct Path Insert 방식으로 데이터를 입력하거나 병렬 방식으로 DML을 수행하면 Exclusive 모드 테이블 Lock이 걸린다 다른 트랜잭션이 수행할 수 없다 트랜잭션이 빈번한 때에는 사용하지 말자


1. Direct-Path Insert ( Append와 Logging 모드 )

Direct-Path Insert 방법은 Logging과 NOLOGGING mode를 둘 다 사용할 수 있다.



2. Direct-Path Insert ( Append hint, Parallel hint 사용 )


 1) Serial Direct-Load Insert : APPEND hint 를 통해 사용

 2) Parallel Direct-Load Insert : APPEND 없이 PARALLEL hint만으로도 사용 가능

   - Insert시에 PARALLEL을 지정하면 무조건 Direct-Load로 작동

 3) APPEND : 오라클 buffer cache를 거치지 않고 DB의 table에 insert하므로 Undo Segment를 발생시키지 않음

   - NOLOGGING모드 사용시 명시적 지정 필요

 4) PARALLEL : DML문장을 병렬로 수행, 해당 Session에 대해서 Parallel DML을 Enable시켜야 한다


----------------------------------------------------------------------------------------


/*+ append */ -> append 모드 Serial Insert


# parallel DML을 활성화한 상태 ( Parallel Insert는 항상 Append 모드로 작동함)

/*+ append parallel(target 4) */ -> append 모드 Parallel Insert

/*+ parallel(target 4) */ -> append 모드 Parallel Insert


# parallel DML을 활성화하지 않은 상태

/*+ append parallel(target 4) */ -> append 모드 Serial Insert

/*+ parallel(target 4) */ -> Noappend 모드 Serail Insert


---------------------------------------------------------------------------------------


http://ukja.tistory.com/333 참조 


Direct Path Insert(Insert /*+ APPEND */...포함)와 Redo 생성량간의 관계를 확인해보자


Direct Path Insert에서 Redo 생성량에 영향을 주는 기본 요소는 다음과 같다


 - 데이터베이스가 ARCHIVELOG 모드인가, NOARCHIVE LOG 모드인가?

 - 테이블이 LOGGING 모드인가, NOLOGGING 모드인가?

 - 테이블에 인덱스가 존재하나?




 - NOARCHIVELOG 모드는 테이블의 Logging 여부에 상관없이 Direct Path Insert는 최소의 Redo 생성

 - ARCHIVEL 모드는 테이블이 Nologging 모드여야만 Direct Path Insert가 최소 Redo 생성

 - 인덱스가 존재할 경우 Nologging모드에서 Direct Path Insert를 수행하더라도 적지 않은 Redo를 생성

   인덱스를 변경하는 과정에서 Redo는 여전히 생성되기 때문


세번째 이유 때문에 보통 대량의 데이터를 Direct Path Insert로 추가할 경우에는 인덱스를 비활성화시킨후 Insert 끝나고나면 리빌드 하는 방법을 많이 사용


 - UPDATE나 DELETE 문장에서도 Direct Path Mode가 가능한가? Insert 문장에 Direct Path Mode가 가능한 것은 새로운 데이터의 추가이기 때문이다 기존 데이터를 변경하지 않기 때문에 테이블에 TM락을 Exclusive하게 걸고 HWM위에 데이터를 Append해버리면 된다 중간에 에러가 생기면 추가된 공간을 무시해버리면 되기 때문에 Redo를 생성하지 않는 옵션이 가능하다 하지만 UPDATE나 DELETE는 기존 데이터를 변경하는 것이기 때문에 반드시 Redo가 생성된다



'스터디북' 카테고리의 다른 글

<10/23> 그땐 그땐 그땐  (0) 2015.10.23
<10/22> Can't Stop  (0) 2015.10.22
<10/21> Cinderella  (0) 2015.10.21
<10/20> Whatever You Are  (0) 2015.10.20
[10/19] 정리  (0) 2015.10.19