문서유형ㅣ기술정보
분야ㅣ 마이그래이션
적용제품버전ㅣ T6, T7
문서번호ㅣTMITI038
개요
Insert 수행 시 Append 힌트의 유무에 따라 생성되는 Redo의 양을 확인하여, 운영 환경에서의 부하를 줄일 수 있도록 테스트를 진행합니다.
방법
테스트 시나리오
ALL_OBJECTS 데이터를 테스트 테이블에 적재하면서, 테이블의 LOGGING 옵션과 APPEND 힌트를 각각 변경해가며 INSERT를 수행하고 생성되는 Redo량을 확인합니다. 또한 NOARCHIVELOG 모드와 ARCHIVELOG 모드에서 각각 동일하게 실행하여 결과를 비교합니다.
테스트 테이블 생성
CREATE TABLE TEST_TABLE AS
SELECT *
FROM ALL_OBJECTS
WHERE 1 = 0;데이터 insert 테스트
다음 INSERT 쿼리를 NOARCHIVELOG 모드와 ARCHIVELOG 모드에서 각각 실행하여 Redo 생성량을 비교합니다.
테이블 logging, append 힌트 미사용
ALTER TABLE TEST_TABLE LOGGING;
INSERT INTO TEST_TABLE
SELECT * FROM ALL_OBJECTS;
테이블 logging, append 힌트 사용
TRUNCATE TABLE TEST_TABLE;
ALTER TABLE TEST_TABLE LOGGING;
INSERT /*+ APPEND */ INTO TEST_TABLE
SELECT * FROM ALL_OBJECTS;
테이블 nologging, append 힌트 사용
TRUNCATE TABLE TEST_TABLE;
ALTER TABLE TEST_TABLE NOLOGGING;
INSERT /*+ APPEND */ INTO TEST_TABLE
SELECT * FROM ALL_OBJECTS;
테이블 nologging, append 힌트 미사용
TRUNCATE TABLE TEST_TABLE;
ALTER TABLE TEST_TABLE NOLOGGING;
INSERT INTO TEST_TABLE
SELECT * FROM ALL_OBJECTS;
테스트 결과
-- redo 생성량 측정 쿼리
select * from v$sysstat where name like 'redo log size';| 조건 | redo 생성량 | |
| NOARCHIVELOG MODE | ARCHIVELOG MODE | |
| 테이블 logging, append 힌트 미사용 | 164886 | 164918 |
| 테이블 logging, append 힌트 사용 | 5948 | 177584 |
| 테이블 no logging, append 힌트 미사용 | 164886 | 164886 |
| 테이블 no logging, append 힌트 사용 | 6036 | 5948 |
결론
NOARCHIVELOG모드에서는INSERT수행 시 Redo 생성량을 줄이기 위해APPEND힌트 사용을 권장합니다.ARCHIVELOG모드에서는 테이블을NOLOGGING으로 변경한 후APPEND힌트를 함께 사용하는 방식을 권장합니다.단,
INSERT INTO ... VALUES구문에서는APPEND힌트가 동작하지 않으므로 적용 시 주의가 필요합니다.