Deferred Segment

2024. 9. 12. 17:33DBMS/ORACLE Admin

반응형

Deferred Segment Creation은 Oracle Database에서 테이블 생성 시 세그먼트를 바로 할당하지 않고, 첫 번째 데이터 삽입(INSERT) 시점에 세그먼트를 할당하는 방식이다. 제어하는 방식은 SEGMENT CREATION IMMEDIATE와 SEGMENT CREATION DEFERRED로 설정할 수 있다. 

1. Segment Creation Immediate

  • 테이블을 생성하자마자 바로 세그먼트가 할당된다.
  • 기본적으로 Oracle Database에서 테이블을 생성할 때, 테이블 구조를 저장하고, 저장할 데이터를 담을 공간(세그먼트)을 즉시 할당한다. 
CREATE TABLE table_name ( column1 datatype, column2 datatype ) SEGMENT CREATION IMMEDIATE;

2. Segment Creation Deferred

  • 테이블을 생성할 때는 세그먼트가 생성되지 않고, 데이터가 처음 삽입될 때 세그먼트가 할당된다.
  • 즉, 빈 테이블이 있는 경우 불필요하게 스토리지를 미리 차지하지 않도록 지연시켜 효율적으로 사용할 수 있게 해준다
CREATE TABLE table_name ( column1 datatype, column2 datatype ) SEGMENT CREATION DEFERRED;

Deferred Segment를 사용하는 이유

  1. 공간 절약:
    • 데이터가 없는 테이블에 대해 세그먼트를 미리 할당하지 않음으로써, 실제 데이터를 저장하기 전까지는 디스크 공간을 차지하지 않게 된다. 특히, 많은 수의 빈 테이블이 있는 경우 유용
  2. 빠른 테이블 생성:
    • 세그먼트를 즉시 할당하지 않기 때문에, 테이블 생성 속도가 더 빠른다. 특히 개발 환경에서 여러 개의 테스트 테이블을 빈번하게 생성하는 경우 유용한다.
  3. 성능 최적화:
    • 테이블을 만들고 데이터를 넣지 않을 경우에는 세그먼트를 할당하지 않기 때문에, 스토리지 할당 및 관리 오버헤드가 줄어든다.
  4. 대규모 스키마 설계 시 유용:
    • 대규모 스키마 설계 시 많은 테이블을 한꺼번에 생성할 때, 모든 테이블에 세그먼트를 미리 할당하면 상당한 스토리지가 필요하게 된다. 이를 방지하고 스토리지를 절약하기 위해 deferred segment를 사용한다.
  5. 관리 효율성:
    • 데이터가 없는 테이블은 세그먼트 관리가 필요하지 않으므로, 테이블과 세그먼트 관리를 쉽게 할 수 있다.

 

 
 

 

 

반응형