반응형
1. Direct Patch I/O
- 일반적인 블록 I/O는 DB 버퍼 캐시를 경유한다. 읽고자 하는 블록을 먼저 버퍼캐시에서 찾아보고, 찾지 못할 때만 디스크에서 읽는다. 데이터 변경도 버퍼캐시에 적재된 블록에서 이루어지며, DBWR 프로세스가 주기적으로 변경된 블록(Dirty Buffer Blcok)을 데이터파일에 기록한다.
-> 오라클은 버퍼 캐시를 경유하지 않고 데이터블록을 읽고 쓸 수 있는 Direct I/O 기능을 제공한다.
- Temp Segment Block을 읽고 쓸 떄
- 병렬 쿼리로 Full scan을 수행할 때
- Nocache 옵션을 지정한 LOB Column을 읽을 때
- Direct 옵션을 지정하고 export를 수행할 때
- Parleele DML을 수행할 때
- Direct Path Insert를 수행할 때
- /*+ append*/ 힌트
- CTAS
1) Direct Patch Read / Write Temp
- 데이터를 정렬할 때는 PGA메모리에 할당되어있는 Sort Area를 사용합니다. 정렬할 데이터가 많아 Sort Area가 부족해지면 Temp 테이블스페이스를 사용하는데, Direct Path I/O 를 사용한다. Direct path write temp / Direct path read temp 이벤트로 측정된다.
2) Direct Path Read
- -. 병렬쿼리로 Full Scan 할 경우 사용가능, 병렬도(DOP)를 2로 주고 병렬쿼리를 수행하면 수행속도가 2배 이상 빨라지는 이유이다. direct path read 이벤트 발생
- -. 버퍼캐시에 내용이 기록되지 않은 상태에서 병렬로 Direct Path Read를 실행하면 Dirty Read가 생기므로 메모리와 디스크간 동기화를 한다음 실행한다. 10gR2부터는 필요한 세그먼트만 동기화를 하고 실행한다.
3) Direct Path Write
- -. 병렬 DML을 실행하거나, Direct Path Insert 방식으로 insert 할 떄 사용한다. direct path write 이벤트 발생
- -. Driect Path Insert 방식
- /*+append */ 힌트
- 병렬모드로 insert
- direct 옵션을 지정하고 SQL*Loader(sqldr)로 데이터 로드
- CTAS
- -. Direct Path Insert 방식으로 Insert하는 알고리즘
->테이블 세그먼트의 HWM(high water mark) 바깥 아무도 읽지 않는 영역에 순차적으로 입력하므로 UNDO 발생 최소 - 기능 활성화 방법
alter table test_table10 nologgin;
반응형
'Database > Oracle' 카테고리의 다른 글
[ORACLE] LOCK 구조, 경합 쿼리 (0) | 2022.09.21 |
---|---|
[ORACLE] Object변경 작업(dependency check, lock) (0) | 2022.08.26 |
[ORACLE] PAGING 처리 (0) | 2022.08.18 |
[ORACLE] RAC Patch (0) | 2022.06.27 |
[ORACLE] RAC Recovery (0) | 2022.06.16 |