[ MSSQL ] 데이터의 물리적 구조

Posted by 알 수 없는 사용자
2015. 6. 2. 08:13 프로그래밍/데이터베이스

CREATE DATABASE TEST

'TEST' 데이터베이스 생성시
TEST라는 논리적 이름을 가진 물리적 파일이 존재하게 된다.

위 그림과 같이
*.mdf, *.ndf ( 데이터파일 ) : 실제 데이터들이 저장된다.
*.ldf : 로그파일이 저장된다.
로 구성된다.

[ 데이터파일 / 로그파일 바로가기 ]

 

 데이터의 저장 구조를 살펴보면

위 그림과 같이 사용자는 SQL Server Management Studio 와 같은 인터페이스를 통하여 데이터파일과 로그파일에 데이터를 저장한다.
데이터 저장 시 데이터 파일은 로그파일과 다르게 순차적으로 저장되지 않는다.

데이터 파일Page(8KB) 라고 불리는 최소 저장 단위에 저장된다.
즉, 실제 내용인 행 데이터들은 각 페이지에 저장되는 것이다.

그리고 하나의 테이블이나 인덱스는 물리적으로 연속 8페이지로 구성된 Extend(64KB)에 저장된다.

[ Page / Extend 바로가기 ]

 

헌데, 한 행의 크기가 8KB가 넘는 데이터들은 어떻게 페이지에 저장될까?
이 경우 SQLServer는 IAM(Index Allocation Map)이라 불리우는 페이지에 해당 데이터를 저장한다.

IAM 페이지는 할당 단위에 사용되는 데이터베이스 파일의 4GB 부분에 Extent를 매핑한다.
할당 단위의 유형은 아래 세 가지가 있다.
  • IN_ROW_DATA : 힙 또는 인덱스의 파티션을 포함
  • LOB_DATA : 데이터의 LOB(Large Object) 데이터 형식을 포함
  • ROW_OVERFLOW_DATA : 8KB의 행 크기 제한을 초과한 가변 길이의 데이터를 포함

로그 파일은 Insert, Update 등 데이터를 변경하는 동작을 처리 할때 로그를 남긴다.
데이터가 변경될 때 데이터 파일에 변경된 데이터를 쓰고 성능이 저하됨에도 불구하고 로그파일에도 쓰는 이유는 무엇일까?
이유는 DBMS의 가장 근본적인 목적 중 하나인 데이터베이스의 무결성 때문이다.
즉, 트랜잭션 로그파일을 통해 잘못된 작업일 경우 Rollback tran을 선언하여 트랜잭션을 취소시켜 데이터를 작업 이전에 데이터로 보존 할 수 있다.

 

 

 

출처 : http://egloos.zum.com/sweeper/v/3003333

 

 

 

 

 

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

NOSQL  (322) 2015.11.06
[ MSSQL ] 데이터 파일(.mdf/.ndf)과 로그파일(.ldf)  (4) 2015.06.02
[ MSSQL ] Page와 Extend  (4) 2015.05.27
MSSQL vs MySQL vs Oracle  (318) 2015.04.10