우리가 사용하는 데이터베이스 즉 SQL서버에 있는 데이터는 어디에 저장할까요? SQL 서버가 버퍼 캐시(Buffer cache)에 자주 사용되는 데이터들을 저장해두기는 하지만, 실제 대부분의 데이터들은 파일 시스템에 저장해둔다. 이는 매우 당연한 것이다. 우리가 알고자 하는 것은 SQL서버가 어떻게 이러한 데이터들을 파일로 관리하는가 이다.
 
SQL 서버의 경우에 데이터베이스는 모두 세 가지 형식의 데이터 파일들을 유지하고 있다. 각각 MDF(Master Data File), NDF(secondary Data File), LDF(Log Data File)이다. SQL 서버가 설치된 폴더의 Data폴더를 보면 이러한 데이터 파일들이 있는 것을 알 수 있다. 혹은 master데이터베이스의 Sysdatabases 테이블을 검색하여 filename 컬럼을 확인해도 데이터베이스가 사용하는 파일을 볼 수 있다. 각각의 파일들은 다음과 같은 의미를 가진다.
- MDF(primary Data File): 주 데이터 파일
- NDF(secondary Data File): 보조 데이터 파일
- LDF(Log Data File): 로그 데이터 파일
 
새로운 데이터 베이스를 생성하면 MDF와 LDF 파일은 반드시 같이 생성된다. NDF는 사용자가 옵션을 지정하여 여러 파일들에 데이터를 분산 배치하고자 하는 경우에 이용될 수 있다. 참고로 NDF에 분산 배치는 데이터 I/O병목 현상을 줄이고, 수행 속도를 빠르게 할 수 있다.
 
우리가 사용하는 데이터베이스는 논리적인 데이터베이스와 물리적인 데이터 베이스로 나눌 수가 있다. 논리적인 데이터 베이스는 우리가 SQL Management를 이용하여 생성하는 테이블, 뷰, 저장 프로시져, 저장 함수 등을 논리적인 데이터베이스라고 한다.
 
그리고 앞에서 말한 MDF파일(Sample.mdf), NDF파일(Sample.ndf), LDF파일(Sample.ndf)는 실제 데이터베이스 정보 및 개체들을 가지고 있고, 물리적으로 실존한다는 의미에서 물리적인 데이터베이스이다. 물론 물리적인 데이터베이스는 파일이 아니라 파일이 그룹핑된 디바이스(Device)일 수도 있다.


참고서적:Deep Inside T-SQL


크리에이티브 커먼즈 라이센스
Creative Commons License 이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
트랙백 주소: http://ggoma.isblog.net/trackback_post_431.aspx

댓글을 달아 주세요