서버 개발/데이터베이스 일반

[MSSQL] 데이터 저장 구조

지노윈 2020. 5. 3. 15:36
반응형

 

데이터 저장의 저장의 기본 단위가 '페이지'입니다.

페이지 관리의 기본 단위가 '익스텐트'입니다.

 

[페이지]

SQL Server의 페이지 크기는 8KB입니다. 1MB당 128페이지가 존재합니다.

각 페이지는 96바이트의 머리글로 시작하여 머리글에는 시스템 정보가 저장됩니다.

 

머리글 다음에 데이터 행과 이에 대응하는 행 오프셋 정보를 담고 있다. 구조는 다음과 같습니다.

대용량 행(varchar, nvarchar, varbinary, sql_variant등)의 경우에는 8KB를 초과하는 경우가 습니다.

실제 행들이 여러 페이지에 걸쳐 있을 수 없지만 이러한 행들은 전체 행의 8060바이트를 초과하면  ROW_OVERFLOW_DATA 할당 단위에 있는 페이지로 동적으로 옮기고 원래 페이지에는 이에 대한 24바이트 포인터가 유지됩니다.

 

[익스텐트]

익스텐트는 8개의 페이지가 보여 64KB입니다. 1MB당 16개의 익스텐트가 존재합니다.

SQL Server는 효율적인 공간 할당을 위해 적은 양의 데이터를 포함하는 테이블에 전체 익스텐트를 할당하지 않습니다. 

따라서 다음과 같이 두 가지 유형의 익스텐트가 있습니다.

 

  • 혼합형 익스텐트 : 하나의 익스텐트에 서로 다른 소유자의 페이지 8개가 혼합으로 존재
  • 단일 익스텐트 : 단일 소유자로 이루어집니다. (주로 대량 삽입의 경우 단일 익스텐트로 할당됩니다.)

http://msdn.microsoft.com/ko-kr/library/ms190969(v=sql.105).aspx

 

페이지 및 익스텐트 이해

04/01/2012 읽는 데 2분 이 문서의 내용 --> 페이지 및 익스텐트 이해 SQL Server의 기본 데이터 저장 단위는 페이지입니다. 데이터베이스에서 데이터 파일(.mdf 또는 .ndf)에 할당되는 디스크 공간은 논리적인 페이지로 나뉘어지며 0에서 n 사이의 숫자가 연속으로 페이지에 매겨집니다. 디스크 I/O 작업은 페이지 수준에서 수행됩니다. 즉 SQL Server는 전체 데이터 페이지를 읽거나 씁니다. 익스텐트는 실제로 연속하는 8페이지를 모

docs.microsoft.com

 

 

'서버 개발 > 데이터베이스 일반' 카테고리의 다른 글

Nested Loops/Sort Merge/Hash Join  (0) 2020.05.01
OLTP, OLAP, DW  (0) 2020.03.25
SQL의 분류 DML/DDL/DCL/TCL  (0) 2020.03.25