데이터베이스에서 데이터 파일에 할당되는 디스크공간은 논리적인 페이지로 나뉘면서
연속적인 숫자가 페이지에 매겨집니다.
Page(페이지)
책이 page로 구성되어 있는 것처럼 SQL 서버도 Page로 구성되어 있으며 크기는 8KB 입니다.
SQL서버의 가장 기본적인 단위입니다.
실제로 SQL서버에 데이터의 접근시에는 페이지 단위로 접근합니다.
페이지는 대부분 Data로 구성되어 있지만 일부 페이지는 인덱스(데이터 위치), 텍스트/이미지,
등등으로도 구성되어 있습니다.
각 페이지는 96바이트의 헤더로 구성되어 있으며, 헤더는 페이지에 대한 시스템 정보를 저장합니다.
페이지 유형 | |
DATA | text in row를 ON으로 설정한 경우 온갖 데이터를 포함한 데이터 행 |
인덱스 | 인덱스 항목 |
텍스트/이미지 | LOB(Large Object) 데이터 유형, 데이터 행이 8KB를 초과하는 경우 가변 길이 열 |
전역할당맵 | 익스텐트를 관리하기 위한 여부 정보 |
PFS 페이지 | 페이지 할당 및 페이지 사용 가능한 공간 정보 |
IAM | 테이블 또는 인덱스에 할당 단위당 사용하는 익스텐트 정보 |
Extents
SQL서버의 익스텐트는 공간 관리의 기본 단위입니다. 하나의 익스텐트는 연속하는 8페이지입니다.
크기는 64KB입니다.
일반적으로 신규 테이블이나 인덱스는 Mixed extent의 페이지를 할당합니다.(효율을 위해서)
이후 해당 테이블이나 인덱스가 8페이지로 증가하면 후속 할당을 위해서 uniform extent를 사용하도록 전환됩니다.
SQL Server 2016부터 모든 할당의 기본값은 uniform extent를 사용합니다.
익스텐트 종류 | 설 명 |
mixed extent | 최대 8개의 다른 개체(테이블이나 인덱스등)가 공유할 수 있습니다. (페이지 단위) |
uniform extent | 단일 개체가 모든 8페이지를 소유합니다. 전체 페이지는 소유개체만 사용가능합니다. |
PFS 페이지
PFS(Page Free Spece) 페이지는 Page 할당여부 및 빈 공간의 양을 1바이트로 표시합니다.
PFS 페이지는 약 8000개의 페이지(64MB)의 빈공간을 추적합니다. 8000개 페이지 이후에는
새로운 PFS 페이지가 필요합니다.
페이지 상태 |
비어 있음 |
1 ~ 50% 채워짐 |
51 ~ 80% 채워짐 |
81 ~ 95% 채워짐 |
96 ~ 100% 채워짐 |
익스텐트 할당 및 빈 공간 관리
전역 할당 맵(GAM) 페이지는 어떤 익스텐트가 할당 되어 있는지를 1비트로 표시합니다.
하나의 페이지는 8KB이고 64000비트이므로 GAM은 64000개의 익스텐트(4GB)를 관리합니다.
GAM 비트 | 설 명 |
0 | 사용중인 Extent |
1 | 비어 있는 Extent |
msdn의 해당 글을 기준으로 작성하였습니다.
'MSSQL' 카테고리의 다른 글
[설치] SQL Server 2019 Developer 설치하기 (0) | 2022.08.26 |
---|---|
[MSSQL] 트랜잭션(Transaction) (0) | 2020.01.07 |
[MSSQL] 인덱스의 내부 동작 방식 (0) | 2019.11.16 |
[MSSQL] 인덱스(Index) (0) | 2019.11.04 |