SQL Server와 Oracle의 저장 구조 관리 방식 차이에서 기인한 현상이다. 결론부터 말하자면, SQL Server는 익스텐트를 공유할 수 있는 구조가 있지만, Oracle은 하나의 익스텐트를 반드시 하나의 오브젝트(세그먼트)가 독점한다.
SQL Server는 아주 작은 테이블들이 많을 때 디스크 공간이 낭비되는 것을 막으려고 하나의 익스텐트를 쪼개 쓰는 방식을 지원한다. 반면 Oracle은 익스텐트 자체를 세그먼트의 하위 단위로 엄격히 관리하므로, 오브젝트 간 익스텐트 공유라는 개념 자체가 존재하지 않는다.
| 구분 | SQL Server | Oracle |
|---|---|---|
| 최소 할당 단위 | 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 기능을 사용하여, 실제 데이터가 입력되기 전까지 익스텐트 할당을 늦추는 방식을 택한다.