Direct Path Insert는 Oracle에서 데이터를 삽입할 때 기존 테이블의 블록을 재사용하지 않고, 새로운 데이터 블록을 직접 할당하여 삽입하는 방식입니다. 일반적인 INSERT는 기존 블록에 데이터를 추가하지만, Direct Path Insert는 새로운 블록을 예약하여 데이터베이스에 바로 기록합니다.
🔹 Direct Path Insert 주요 특징
NOLOGGING 옵션 사용 시)PARALLEL 힌트 사용 시)INSERT /*+ APPEND */ INTO 테이블명
SELECT 컬럼명 FROM 다른_테이블; APPEND 힌트를 사용하면 Direct Path 방식으로 INSERT 수행ALTER SESSION ENABLE PARALLEL DML;
INSERT /*+ APPEND PARALLEL(t, 4) */ INTO target_table t
SELECT * FROM source_table; PARALLEL(t, 4): 4개의 병렬 프로세스를 사용하여 삽입ENABLE PARALLEL DML을 설정해야 병렬 INSERT 가능ALTER SESSION ENABLE PARALLEL DML;
INSERT /*+ APPEND PARALLEL(emp, 4) */ INTO emp NOLOGGING
SELECT * FROM emp_backup; NOLOGGING을 사용하면 Redo Log를 최소화하여 성능 향상DELETE 또는 TRUNCATE를 수행해야 함| 항목 | Direct Path Insert | Conventional Insert |
|---|---|---|
| 데이터 저장 방식 | 새로운 블록을 직접 사용 | 기존 블록을 찾아 삽입 |
| Redo Log | NOLOGGING 사용 시 최소화 | 항상 생성됨 |
| Undo 사용 | 최소화됨 | 일반적인 DML 수준 |
| 성능 | 빠름 (대량 데이터 삽입 시 유리) | 느림 (기존 블록을 검색해야 함) |
| Rollback | 불가능 | 가능 |
| 인덱스 유지 | 무효화 가능 | 유지됨 |
APPEND 힌트를 사용하면 ROLLBACK이 불가능DELETE 또는 TRUNCATE 수행 필요APPEND를 사용하면 인덱스가 무효화될 수 있음ALTER INDEX REBUILD 명령을 실행하여 인덱스를 재구성해야 함ALTER INDEX index_name REBUILD;PARALLEL과 함께 사용하면 EXCLUSIVE MODE(배타적 잠금) 적용UPDATE 또는 DELETE 불가능NOLOGGING으로 삽입한 데이터는 복구할 수 없음NOLOGGING 옵션을 활용하여 Redo Log 최소화기본적으로 INSERT는 Conventional Path를 사용하므로, Direct Path Insert를 방지하려면 APPEND 힌트를 제거하면 됩니다.
INSERT INTO table_name
SELECT * FROM source_table; 또는 NOLOGGING 대신 LOGGING 활성화
ALTER TABLE table_name LOGGING; ✅ Direct Path Insert는 대량 데이터 적재 시 매우 유용하며, APPEND와 NOLOGGING을 활용하면 성능을 극대화할 수 있습니다.
❗ 하지만 ROLLBACK이 불가능하고, 인덱스가 무효화될 수 있으며, NOLOGGING 사용 시 복구가 어렵다는 점을 고려해야 합니다.
1. 타입스크립트 개요 타입스크립트(TypeScript)는 마이크로소프트(Microsoft)가 개발한 자바스크립트(JavaScript)의 상위 집합(Superset) 언어입니다.즉, 자바스크립트에 정적 타입(Static Type)을 추가하고,…
윈도우 운영체제의 노트북에서는 iPhone 유선 테더링이 잘 안되는 경우가 많습니다. 보통 iPhone의 드라이버가 설치가 안되있어서인…
안녕하세요, 혹시 이런 생각해 본 적 없으신가요? "내가 투자한 회사는 누가 감시하고, 어떻게 운영될까?" 오늘은…
1. Gemini CLI란 무엇인가요? Gemini CLI는 터미널 환경에서 직접 Gemini 모델과 상호작용할 수 있도록 만들어진…