Notice
Recent Posts
Recent Comments
관리 메뉴

안까먹을라고 쓰는 블로그

[MSSQL] 파일그룹 이란? 본문

DataBase/MS SQL

[MSSQL] 파일그룹 이란?

YawnsDuzin 2024. 2. 29. 11:02

 

반응형

데이터베이스 - 속성 - 파일 그룹

MSSQL SERVER 데이터베이스에는 2가지의 데이터파일과 로그파일 총 3가지의 파일로 데이터베이스를 운영합니다.

  • 데이터 파일 : 테이블, 인덱스, 저장 프로시저 및 뷰 등의 개체와 데이터를 저장합니다.
  • 로그 파일 : 데이터베이스의 모든 트랜잭션을 복구하는 데 필요한 정보를 저장합니다. 
                       로그파일은 트랜잭션 로그파일 이라고 흔히 부릅니다.

데이터 베이스 파일

파일 설명
Primary File (.mdf) 데이터베이스의 시작 정보를 포함하며 데이터베이스의 나머지 파일을 관리합니다.
모든 데이터베이스에는 Primary File이 있습니다. 데이터 파일 확장명은 .mdf입니다.
Secondary File (.ndf) 선택적 사용자 정의 데이터 파일입니다. 각 파일을 서로 다른 디스크 드라이브에 배치하여 데이터를 여러 디스크에 분산 시킬 수 있습니다. 데이터 파일 확장명은 .ndf입니다.
Transaction Log File  (.ldf) 이 로그에는 데이터베이스 복구에 사용되는 정보가 저장됩니다. 데이터베이스마다 최소한 하나의 트랙잭션 로그 파일이 필요합니다. 로그 파일 확장명은 .ldf입니다.

기본적으로 데이터와 트랜잭션 로그는 단일 디스크 시스템을 처리하기 위해 동일한 드라이브와 경로에 생성이 됩니다.
이 선택은 실제 서비스 환경에서는 최적이 아닐 수도 있다고 합니다.
※ MS에서 권장하는 방법은 데이터(.mdf)와 로그파일(.ldf)은 서로 다른 디스크에 배치하는 것을 권장합니다(다중 I/O)

 

파일그룹

데이터 파일들을 관리상의 목적으로 분류하기 위해 파일 그룹의 이름을 지정할 수 있다. 그래야 파일 그룹별로 백업이나 복구를 할 수 있으며 데이터를 분산 배치하여 질의 성능을 향상시킬 수 있다.

 

파일 및 파일그룹 채우기 전략

파일그룹은 각 파일 그룹에 있는 모든 파일에 대해 "균형잡힌 채우기 전략"을 사용합니다.
파일그룹에 데이터를 쓸때 SQL SERVER 데이터베이스 엔진은 첫 번째 파일이 꽉 찰때까지 모든 데이터를 쓰지 않고,
"파일그룹 내의 각 파일에 해당 파일의 사용가능한 공간에 비례하는 양을 분배"하여 씁니다.

예를 들어
 파일그룹1(FG1), 파일그룹2(FG2)가 있다고 할때
 FG1에는 100MB의  빈 공간이 있고, FG2에는 200GB의 빈 공간이 있다면, 사용가능한 공간에 비례하여,
 FG2에 FG1보다 약 2배의 데이터를 저장합니다. 이렇게 하면 두 파일이 꽉 차며 간단한 스트라이프가 수행됩니다.

파일 및 파일그룹 디자인 원칙

  • 둘 이상의 데이터베이스에서 파일 또는 파일 그룹을 사용할 수 없습니다.
    예를 들어 판매 데이터베이스의 데이터와 개체를 포함하는 sales.mdf 및 sales.ndf 파일은
    다른 데이터베이스에서 사용할 수 없습니다.
  • 파일은 한 파일 그룹의 멤버만 될 수 있습니다.
  • 트랜잭션 로그파일은 파일그룹의 일부가 될 수 없습니다.

 

SQL SERVER 권장사항

  • 데이터베이스는 기본적으로 하나의 주 데이터 파일(.mdf)와 하나의 트랜잭션 로그파일(.ldf)만 있으면 됩니다.
  • 여러 데이터 파일을 사용하는 경우 추가, 추가 파일에 대한 두 번째 파일 그룹을 만들고, 해당 파일그룹을 기본 파일그룹으로 만들어야 합니다. 이렇게 하면 주 파일에는 시스템 테이블과 개체만 있게 됩니다.
  • 성능을 극대화하려면 가능한 여러 개의 사용 가능한 디스크에 파일이나 파일그룹을 만듭니다. 
    디스크 공간이 많이 필요한 개체는 여러 파일 그룹에 배치합니다.
  • 특정 물리적 디스크에 개체를 배치할 수 있도록 파일그룹을 사용합니다.
  • 동일한 조인쿼리에서 사용되는 여러 테이블은 여러 파일그룹에 배치합니다.
    조인 된 데이터는 병렬디스크 I/O를 사용하기 때문에 성능이 향상됩니다.
  • 자주 엑세스되는 테이블과 해당 테이블에 속한 비클러스터형 인덱스는 여러 파일그룹에 배치합니다.
    여러 파일그룹을 사용하면 파일이 여러 물리적 디스크에 있을 경우 병렬 I/O가 수행되기 때문에 성능이 향상됩니다.
  • 트랜잭션 로그파일은 다른 파일 및 파일그룹과 동일한 물리적 디스크에 배치하지 마세요

 

[참고사이트] https://docs.microsoft.com/ko-kr/sql/relational-databases/databases/database-files-and-filegroups?view=sql-server-ver15

반응형
Comments