[ MSSQL ] Page와 Extend

Posted by 알 수 없는 사용자
2015. 5. 27. 16:50 프로그래밍/데이터베이스

Page : SQL Server의 기본 저장(I/O) 단위
Extent : 공간 관리의 기본 단위

위 그림과 같이 데이터베이스의 데이터파일(mdf,ndf)에 할당되는 디스크 공간은 Page로 나뉘어지며 Extent는 8개의 Page로 구성한다.
모든 Page는 Extent로 저장된다.

1. Page

Page에 데이터가 저장될 때 각 페이지는 96byte의 header로 시작하며, header는 시스템 정보를 저장하는데 사용된다.
header에 저장되는 시스템 정보에는 페이지번호, 유형, 페이지 사용 가능 크기등등 여러가지의 시스템 정보가 표현된다.

Page의 구조를 살펴보면


그림과 같이 시스템 정보를 저장하는 header, 데이터의 값이 저장되는 Body 그리고 데이터의 주소값을 저장하는 Row Offset Table으로 구성되어있다.

이전 글에서도 언급했듯이 데이터파일에는 데이터가 수정되는 경우 저장되게 된다.
즉 , SELECT와 같이 조회 행위는 데이터 파일을 읽을 뿐 내용에는 영향을 주지 않는다.

INSERT, UPDATE, DELETE 처럼 데이터의 변화가 있는 경우 어떻게 저장이 되는 가를 살펴보면

DELETE의 경우 해당 데이터가 저장된 행과 주소값을 삭제하고 INSERT명령을 수행하면 삭제된 Offset Table에 새로 삽입된 데이터의 주소값을 저장하고 데이터의 값을 저장할 행을 추가한다. 그러나 그림에서 보면 삭제된 데이터가 사용하고 있던 106번지의 주소는 아무도 사용하지 않고 할당된 공간으로 존재하게 된다.

그렇다면, 106번지는 사용하지 못하는 공간으로 남는 것인가?

그림과 같이 Page에 데이터가 삽입 될 때 행을 삭제하는 단계도 포함한다.
즉, Offset Table의 주소값이 추가 될 경우 삭제된 데이터의 행을 삭제하고 하위 행에 존재 하고 있는 데이터가 삭제된 행의 주소값을 갖게 된다.


2. Extent

하나의 Extent는 연속하는 8개의 page로 이루어진다.

각 페이지는 한 개체에 속하며 한 가지 유형(데이터, 인덱스 등)이지만 Extent 는 최대 8개의 개체에 속할 수 있다.
그리고 Extent는 Mixed(혼합) Extent 와 Uniform(균일) Extent 로 구분 할 수 있다 

Uniform Extent 는 single object가 소유하며 Mixed Extent 는 최대 8개의 object가 공유할 수 있다.
 
일반적으로 새 테이블이나 인덱스에는 Mixed Extent의 페이지가 할당되며 테이블이나 인덱스의 페이지가 8페이지로 증가하면 후속 할당을 위해 Uniform Extent를 사용하도록 전환된다.
인덱스에 8개의 페이지를 생성하는 데 충분한 행을 가진 기존 테이블에서 인덱스를 
만드는 경우 인덱스에 대한 모든 할당 항목은 Uniform Extent에 있다.






출처 : http://laigo.kr/41





'프로그래밍 > 데이터베이스' 카테고리의 다른 글

NOSQL  (0) 2015.11.06
[ MSSQL ] 데이터의 물리적 구조  (0) 2015.06.02
[ MSSQL ] 데이터 파일(.mdf/.ndf)과 로그파일(.ldf)  (0) 2015.06.02
MSSQL vs MySQL vs Oracle  (4) 2015.04.10