SQL Server의 mdf, ndf 파일 구조에 대해서 자료를 정리합니다. 최소한의 기초 이해는 반드시 필요하단 생각이 듭니다. msdn과 관련 서적 및 인터넷 자료를 참고했습니다. 역시, 그림이 많아야 이해하기 쉽습니다.
1. Pages
SQL Server의 기본 저장(I/O) 단위는 Page 이며, 크기는 8KB입니다. 데이터베이스 파일(mdf,ndf)에 할당되는 디스크 공간은 논리적인 page 로 나뉘어지며 효율적으로 관리하기 위해 8개의 연속 페이지로 크기가 고정된 Extent 로 구성합니다. 모든 페이지는 익스텐트로 저장됩니다. 1MB(1024KB/8KB)에는 128 pages 가 존재합니다.
각 페이지는 96-byte 의 header로 시작하며 시스템 정보를 저장하는 데 사용됩니다.
페이지 번호, 유형, 해당 페이지 사용 가능 크기, 인덱스에서 할당 단위당 사용하는 익스텐트 정보, 마지막 Backup Log 문 이후에 할당 단위당 대량 작업에 의해 수정된 익스텐트 정보, 마지막 Backup Database 문 이후에 할당 단위당 변경된 익스텐트에 대한 정보가 이에 포함됩니다.
inserting and deleting rows on a heap table data page.
2. Extents
Extents 는 공간 관리의 기본 단위입니다. 하나의 Extent는 연속하는 8개의 pages (64kb)입니다. 즉, 1MB에는 1024/64 = 16 개의 Extents가 있음을 의미합니다. SQL Server는 효율적인 공간 할당을 위해 적은 양의 데이터를 포함하는 테이블에 전체 익스텐트를 할당하지 않습니다.
각 페이지는 한 개체에 속하며 한 가지 유형(데이터, 인덱스 등)이지만 Extent 는 최대 8개의 개체에 속할 수 있습니다. 구체적으로 Mixed(혼합) Extent 와 Uniform(균일) Extent 차이점 이해가 필요합니다.
Uniform Extent 는 single object가 소유하며 Extent의 전체 8 pages는 소유하는 개체만 사용할 수 있습니다. Mixed Extent 는 최대 8개의 object가 공유할 수 있으며 Extent의 8 pages를 다른 개체가 소유할 수 있습니다.
일반적으로 새 테이블이나 인덱스에는 Mixed Extent의 페이지가 할당되며 테이블이나 인덱스의 페이지가 8페이지로 증가하면 후속 할당을 위해 Uniform Extent를 사용하도록 전환됩니다. 인덱스에 8개의 페이지를 생성하는 데 충분한 행을 가진 기존 테이블에서 인덱스를 만드는 경우 인덱스에 대한 모든 할당 항목은 Uniform Extent에 있습니다.
[참고자료]
Pages and Extents
http://technet.microsoft.com/ko-kr/library/ms190969.aspx
Oracle 전문가를 위한 Microsoft SQL Server 2005 소개
http://download.microsoft.com/download/6/8/f/68f15f44-e957-4a1a-97b8-b7444e4d0379/SQLServer2005ForOracleProfessionals-kor.pdf
SQL Server 2000 UNLEASHED - SAMS
작성자 : Lai Go / 작성일자 : 2008.06.02