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 사용 시 복구가 어렵다는 점을 고려해야 합니다.
필기 시험의 접근통제 영역은 용어 하나만 알아도 풀리는 문제와 개념을 뒤집어 묻는 문제가 섞여 나옵니다.…
유튜브에 AI 자동 생성 영상이 넘쳐납니다. 진짜 크리에이터들은 어떻게 살아남아야 할까요? AI와 경쟁하는 3가지 생존…
이틀 전에 사이드카가 걸렸을 때만 해도 "한 번 놀란 장"으로 끝날 줄 알았는데요. 15일 아침…
오전 시황 글에 이어 장중 후속 정리입니다. 코스피는 개장 직후 5%대였던 낙폭이 오전 10시 전후에…
10월 15일 목요일 아침, 코스피가 전날 종가보다 5.59% 낮은 5,673.01로 출발했습니다. 장 시작 7분 만에…
삼성 갤럭시 AI, 써보니 실망스러웠다. 온디바이스 한계, 지역 제한, 낮은 일상 활용도 등 현실적인 문제점…