1. 데이터베이스란?
데이터베이스란 무엇이가를 저장해 두는 곳이라고 우선 정의할수 있습니다. 이때 무엇인가에 포함되는 것은 테이블(Table), 뷰(View), 인덱스(Index), 저장 프로시져(Stored Procedure), 트리거(Trigger)와 같은 객체(Object)들 입니다.데이터베이스의 객체에 대해서는 예전에 간략하게 설명한적이 있습니다. 머지 않아 각각의 객체들에 대해서 엄청 많이 이야기하게 될것 같습니다.
2. 데이터베이스를 구성하는 파일
SQL Server의 데이터베이스는 운영체제 상에서 보면 확장자가 mdf(또는 ndf)와 ldf 인 파일로 존재하게 됩니다. 예를 들어 연습용 데이터베이스인 pubs 데이터베이스의 경우는 pubs.mdf와 pubs_log.ldf 두개의 파일이 존재합니다.
데이터베이스는 데이터와 로그로 분리되어 저장됩니다. 데이터의 경우는 mdf 확장자(또는 ndf)를 갖으며, 로그의 경우는 ldf 확장자를 갖고 저장됩니다.
확장자(mdf, ndf, ldf)는 반드시 정해진 것이 아니며 원하는 경우 바꿀 수가 있지만 되도록 그대로 사용하는것이 바람직합니다.
확장자를 봄으로써 어떤 역할을 하는 파일인지 구분을 할 수 있기 때문입니다.
만일 pubs.mdf를 pubs.doc 으로 한다면 워드파일이지 데이터 파일이라고 생각 할 수 없기 때문입니다.(만든 사람만 알 수 있겠지요)
다음의 그림은 데이터베이스의 구조를 간단히 보여주고 있습니다.
) 데이터 파일(*.mdf, *.ndf)
실제 자료를 저장합니다. 기본적으로 데이터 파일은 하나만 있어도 되지만 필요하면 더 만들 수 있습니다. 처음 만들어진 파일이 mdf 확장자를 갖게 되며 추가되는 파일은 확장자가 ndf 가 됩니다.
2) 로그 파일(*.ldf)
로그는 트랜잭션 처리와 시스템에 문제가 발생했을 때 복구를 위해 사용됩니다. 보통 데이터 파일의 25% 정도의 사이즈를 갖습니다.
3. Page와 Extents
저는 계산하는 것을 참 싫어 합니다. 하지만 여기서는 약간의 계산을 해보고자 합니다.
1) Page
데이터는 8KB 단위의 블럭을 단위로 저장되는데 이를 페이지(Page)라고 합니다. 결과적으로 데이터베이스는 1MB에는 128Page를 저장 할 수 있게됩니다. 하나의 Row는 여러개의 Page에 걸쳐 저장 될 수 없고 단 하나의 Page에만 저장 될 수 있습니다. 이 사실을 통해 하나의 Row(데이터 레코드로 생각하셔도 됩니다.)의 최대 사이즈는 8060 바이트입니다. 계산해보면 8 X 1024 는 8192 입니다. 하지만 8192바이트를 Row가 전부 차지하지 못하는 이유는 몇가지 정보를 저장하기 위한 약간의 공간(8192 - 8060 = 132)이 필요하기 때문입니다. 간단히 설명한다면 페이지 헤더가 이 공간중에 96KB를 사용하게 되고 나머지는 각 Row가 저장되고 관리되기 위한 몇몇 정보를 기록하는데 사용됩니다.
2) Extent
테이블과 인덱스는 Extent에 저장됩니다. Extent란 8개의 연속된 페이지를 가리킵니다. 1 Page가 8KB 이므로 1 Extent는 64KB(8 KB X 8) 입니다. | |
RECENT COMMENT