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 사용 시 복구가 어렵다는 점을 고려해야 합니다.
윈도우 운영체제의 노트북에서는 iPhone 유선 테더링이 잘 안되는 경우가 많습니다. 보통 iPhone의 드라이버가 설치가 안되있어서인…
안녕하세요, 혹시 이런 생각해 본 적 없으신가요? "내가 투자한 회사는 누가 감시하고, 어떻게 운영될까?" 오늘은…
1. Gemini CLI란 무엇인가요? Gemini CLI는 터미널 환경에서 직접 Gemini 모델과 상호작용할 수 있도록 만들어진…
과적합은 머신러닝에서 학습용데이터를 과하게 학습하여, 실제데이터를 예측하지 못하는 현상을 말합니다. 인공지능(AI)의 학습 방법은 우리가 시험공부를…