반응형
/*
-- Title : [Ora19c] Deferred Segment 이해
-- Tag : oracle 오라클 지연된 세그먼트 deferred segment
*/
■ 지연된 세그먼트란?
Deferred Segment는 Oracle 데이터베이스에서 공간 관리를 효율적으로 수행하기 위한 중요한 기능 중 하나로 Deferred Segment의 주요 역할은 데이터가 실제로 추가될 때까지 세그먼트 생성을 지연시키는 것.
(즉 세그먼트에 실제 데이터가 insert 되지 전까지는 세그먼트는 미생성 → 공간이 0)
ㅁ Deferred Segment의 장점
- 디스크 공간 절약: 실제로 데이터가 저장될 때까지 세그먼트가 생성되지 않으므로 불필요한 공간 낭비를 줄임. 특히 테이블스페이스에 많은 테이블이 생성되지만 실제 데이터는 적은 경우에 효과적.
- 응용 프로그램 설치 시간 단축: 데이터베이스 객체 생성 시 모든 세그먼트가 미리 생성되지 않으므로 초기 설치 시간을 단축.
- 시스템 부하 감소: 세그먼트 생성 작업이 지연되므로 시스템 부하를 줄임.
ㅁ Deferred Segment의 동작 방식
- 초기화 파라미터 설정: DEFERRED_SEGMENT_CREATION 초기화 파라미터를 TRUE로 설정하여 Deferred Segment 기능을 활성화(Default).
- 세그먼트 생성 지연: 첫 번째 행이 삽입되기 전까지 세그먼트 생성이 지연.
- 데이터 삽입 시 세그먼트 생성: 실제로 데이터가 추가될 때 필요한 만큼의 세그먼트가 생성.
Deferred Segment의 종류
- 테이블 세그먼트: 테이블 데이터를 저장하는 세그먼트
- 클러스터 세그먼트: 클러스터 형식으로 만들면 Column(킷 값)을 기준으로 저장되는 세그먼트
- 인덱스 세그먼트: 인덱스를 위한 데이터를 저장하는 세그먼트
ㅁ Deferred Segment 사용 시 주의 사항
- 성능: 대량의 데이터를 한 번에 삽입하는 경우, 초기 세그먼트 생성에 시간이 걸려 성능 저하가 발생.
- 공간 관리: Deferred Segment를 사용하더라도 적절한 테이블스페이스 크기 설정과 모니터링이 필요.
■ Deferred Segment 제어
ㅁ DEFERRED_SEGMENT_CREATION 파라미터 사용
- 초기화 파일(Initial File)
- ALTER SESSION
- ALTER SYSTEM
ㅁ SEGMENT CREATION 절 사용
- IMMEDIATE
- DEFERRED(Default)
-- SEGMENT 즉시 할당
CREATE TABLE TTT3 (C1 NUMBER, C2 NUMBER)
SEGMENT CREATION IMMEDIATE TABLESPACE TBS_TTT;
-- 지연된 SEGMENT 할당
CREATE TABLE TTT4 (C1 NUMBER, C2 NUMBER)
SEGMENT CREATION DEFERRED;
■ Deferred Segment 예외
- 파티션되지 않는 테이블 및 인덱스 세그먼트만 가능.
- IOT, 클러스터된 테이블, 특수 테이블 불가.
- 딕셔너리 관리방식 TBS의 테이블 불가(삭제 후 재생성).
반응형