INSERT SELECT 성능 개선 기본 전략(ㅇ)
2025. 2. 13. 00:03ㆍIT/Oracle
반응형
(1) 병렬 처리 (Parallel DML) 활성화
- 대량 데이터를 삽입할 때는 병렬 처리를 활성화하여 작업을 분산시킬 수 있습니다.
- 병렬 DML 활성화
ALTER SESSION ENABLE PARALLEL DML;
- INSERT 문에 병렬 힌트 추가
INSERT /*+ APPEND PARALLEL(A, 4) */ INTO partitioned_table PARTITION (partition_name)
SELECT /*+ PARALLEL(B, 4) */ *
FROM source_table B;
(2) APPEND 힌트 사용
- APPEND 힌트를 사용하면 데이터를 직접 테이블의 HWM(High Water Mark) 아래에 추가하므로 로그 생성량을 줄이고 삽입 속도를 크게 향상시킵니다.
INSERT /*+ APPEND */ INTO partitioned_table
SELECT ...
FROM source_table;
- 주의: APPEND 힌트를 사용할 경우, 테이블이 NOLOGGING 모드로 설정되어 있어야 최대 성능을 낼 수 있습니다.
파티션 테이블 삽입 시 고려 사항
(1) 파티션 키를 효율적으로 사용
- INSERT SELECT에서 파티션 키가 명확하게 지정되어 있으면 성능이 크게 향상됩니다. 데이터베이스가 파티션 위치를 미리 결정할 수 있기 때문입니다.
INSERT /*+ APPEND PARALLEL(A, 4) */ INTO partitioned_table PARTITION (partition_name)
SELECT ...
FROM source_table
WHERE partition_column = 'specific_partition_value';
(2) 동적 파티션 (Dynamic Partitioning)
- 만약 삽입되는 데이터가 여러 파티션으로 나뉜다면, 동적 파티션 삽입을 사용해 파티션을 자동으로 할당할 수 있습니다.
INSERT /*+ APPEND PARALLEL(A, 4) */ INTO partitioned_table
PARTITION (partition_column)
SELECT ...
FROM source_table;
- 주의: 동적 파티션 삽입은 파티션이 많을수록 오버헤드가 발생할 수 있으므로, 병렬 처리를 추가적으로 활용하세요.
원본 데이터 최적화
(1) 원본 데이터 필터링
- 필요한 데이터만 삽입하도록 원본 데이터를 사전에 필터링하여 삽입 시간을 줄입니다.
SELECT /*+ PARALLEL(B, 4) */ *
FROM source_table B
WHERE created_date >= SYSDATE - 7;
(2) 중복 제거
- 삽입 전에 중복 데이터를 제거하면 성능이 개선됩니다.
SELECT DISTINCT /*+ PARALLEL(B, 4) */ *
FROM source_table B;
파티션 테이블 성능 향상
(1) NOLOGGING 모드 활성화
- 파티션 테이블을 NOLOGGING 모드로 설정하면 REDO 로그 생성을 최소화하여 삽입 성능을 향상시킬 수 있습니다.
ALTER TABLE partitioned_table NOLOGGING;
(2) 병렬 파티션 처리
- 각 파티션에 대해 병렬 처리를 수행하여 성능을 극대화합니다.
INSERT /*+ APPEND PARALLEL(A, 4) */ INTO partitioned_table PARTITION (partition_name)
SELECT /*+ PARALLEL(B, 4) */ *
FROM source_table B;
임시 테이블 사용
- 대량 데이터를 한 번에 삽입하지 않고, 임시 테이블에 데이터를 처리한 후 최종 삽입하면 성능이 개선될 수 있습니다.
CREATE GLOBAL TEMPORARY TABLE temp_table AS
SELECT /*+ PARALLEL(B, 4) */ *
FROM source_table B;
INSERT /*+ APPEND PARALLEL(A, 4) */ INTO partitioned_table
SELECT *
FROM temp_table;반응형
'IT > Oracle' 카테고리의 다른 글
| Job Number 조회(ㅇ) (1) | 2025.02.14 |
|---|---|
| 언두 테이블스페이스 크기 관리 (2) | 2025.02.13 |
| 오라클 코멘트 조회 (1) | 2025.02.12 |
| 오라클 19c에서의 Spark 및 하둡 통합 강화 의미 (2) | 2025.02.12 |
| 오라클 19c - 자동 인덱싱(Auto Indexing) 및 자동 SQL 튜닝(Auto SQL Tuning) 기능(ㅇ) (1) | 2025.02.12 |