반응형

/*
-- Title : [Ora19c] Deferred Segment 이해
-- Tag : oracle 오라클 지연된 세그먼트 deferred segment
*/


■ 지연된 세그먼트란?

Deferred Segment는 Oracle 데이터베이스에서 공간 관리를 효율적으로 수행하기 위한 중요한 기능 중 하나로 Deferred Segment의 주요 역할은 데이터가 실제로 추가될 때까지 세그먼트 생성을 지연시키는 것. 
(즉 세그먼트에 실제 데이터가 insert 되지 전까지는 세그먼트는 미생성 → 공간이 0)

ㅁ Deferred Segment의 장점

  • 디스크 공간 절약: 실제로 데이터가 저장될 때까지 세그먼트가 생성되지 않으므로 불필요한 공간 낭비를 줄임. 특히 테이블스페이스에 많은 테이블이 생성되지만 실제 데이터는 적은 경우에 효과적.
  • 응용 프로그램 설치 시간 단축: 데이터베이스 객체 생성 시 모든 세그먼트가 미리 생성되지 않으므로 초기 설치 시간을 단축.
  • 시스템 부하 감소: 세그먼트 생성 작업이 지연되므로 시스템 부하를 줄임.

ㅁ Deferred Segment의 동작 방식

  1. 초기화 파라미터 설정: DEFERRED_SEGMENT_CREATION 초기화 파라미터를 TRUE로 설정하여 Deferred Segment 기능을 활성화(Default).
  2. 세그먼트 생성 지연: 첫 번째 행이 삽입되기 전까지 세그먼트 생성이 지연.
  3. 데이터 삽입 시 세그먼트 생성: 실제로 데이터가 추가될 때 필요한 만큼의 세그먼트가 생성.

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의 테이블 불가(삭제 후 재생성).

 

 

반응형

+ Recent posts