SQL Server와 Oracle의 저장 구조 관리 방식 차이에서 기인한 현상이다. 결론부터 말하자면, SQL Server는 익스텐트를 공유할 수 있는 구조가 있지만, Oracle은 하나의 익스텐트를 반드시 하나의 오브젝트(세그먼트)가 독점한다.

SQL Server는 아주 작은 테이블들이 많을 때 디스크 공간이 낭비되는 것을 막으려고 하나의 익스텐트를 쪼개 쓰는 방식을 지원한다. 반면 Oracle은 익스텐트 자체를 세그먼트의 하위 단위로 엄격히 관리하므로, 오브젝트 간 익스텐트 공유라는 개념 자체가 존재하지 않는다.

구분SQL ServerOracle
최소 할당 단위Page (8KB)Block (Default 8KB)
익스텐트 구성8 Pages (64KB 고정)가변적 (수동 또는 자동 설정)
익스텐트 공유가능 (Mixed Extent 사용 시)불가능 (Segment가 독점)
관리 목적소량 데이터의 공간 낭비 방지대량 데이터 처리 및 관리 일관성

1. SQL Server의 익스텐트 구조

SQL Server에는 두 가지 유형의 익스텐트(8개의 8KB 페이지로 구성, 총 64KB)가 존재한다.

  • 혼합 익스텐트 (Mixed Extents): 최대 8개의 서로 다른 오브젝트(테이블, 인덱스 등)가 하나의 익스텐트 안에 있는 페이지들을 나누어 사용할 수 있다. 새로운 테이블을 생성할 때 초기 공간 낭비를 줄이기 위해 도입된 개념이다.

  • 단일 익스텐트 (Uniform Extents): 하나의 오브젝트가 익스텐트 내 8개 페이지를 모두 소유한다.

2. Oracle의 방식 (Oracle은 왜 다른가?)

Oracle에서 저장 공간의 할당 단위는 **세그먼트(Segment)**다.

  • 독점 사용: Oracle의 익스텐트는 연속된 데이터 블록의 집합이며, 이 익스텐트는 오직 하나의 세그먼트에만 할당된다.

  • 예를 들어 Table A를 위해 할당된 익스텐트 안에 Table B의 데이터를 저장하는 것은 불가능하다.

  • 공간 효율성을 위해 Oracle은 **Automatic Segment Space Management (ASSM)**와 Deferred Segment Creation 기능을 사용하여, 실제 데이터가 입력되기 전까지 익스텐트 할당을 늦추는 방식을 택한다.