모든 데이터 파일은 기본적으로 파일 그룹에 소속됩니다. 그리고 하나의 데이터베이스에 여러 개의 파일 그룹이 포함될 수 있습니다. 이렇게 여러 개의 파일 그룹으로 나누어서 데이터베이스를 만들면, 성능과 관리적인 측면에서 얻을 수 있는 이점이 많습니다.
파일 그룹이란?
파일 그룹은 여러 데이터 파일을 하나의 그룹으로 묶어서 하나의 단위로 관리할 수 있게 해주는 논리적인 존재입니다. 파일 그룹을 사용하면 데이터베이스 성능을 향상시키고 다양한 백업 및 복원 전략을 구현할 수 있습니다.
1) 데이터베이스 성능 향상
파일과 파일 그룹을 사용하면 디스크 서브 시스템에 기반해서 데이터베이스를 만들 수 있기 때문에 데이터베이스 성능을 향상시킬 수 있습니다. 예를 들어서 컴퓨터에 4개의 디스크가 있다면, 각 디스크마다 하나의 파일을 두어 3개의 데이터 파일과 한 개의 로그 파일로 구성된 데이터베이스를 만들 수 있습니다. 그러면 데이터에 액세스할 때 4개의 읽기/쓰기 헤드가 동시에 병렬로 데이터에 액세스하기 때문에 작업이 매우 빨라집니다. 그리고 데이터베이스 내에 테이블들을 원하는 대로 배치시킬 수 있습니다. 특정 테이블의 I/O를 분산시킬 수 있기 때문에 성능이 향상됩니다.
2) 다양한 백업 및 복원 전략 구현
여러 파일 그룹으로 구성된 데이터베이스는 증분 복원이라는 프로세스를 통해 단계별로 데이터베이스를 복원할 수 있습니다. 여러 파일 그룹을 사용할 때 데이터베이스의 파일을 개별적으로 백업하고 복원할 수 있습니다. 파일 복원 방법을 사용하면 데이터베이스의 나머지 부분을 복원하지 않고 손상된 파일만 복원할 수 있으므로 복구 속도를 높일 수 있습니다. 데이터베이스가 여러 디스크에 물리적으로 저장된 여러 파일로 구성되어 있는 상황에서 한 디스크에 오류가 있다면 오류가 있는 디스크의 파일만 복원하면 됩니다.
파일 그룹의 종류
1) 주 파일 그룹 (Primary Filegroup)
주 파일 그룹은 기본적으로 시스템 테이블들이 저장됩니다. mdf 확장자를 갖는 주 데이터 파일이 포함된 파일 그룹입니다. 확장자가 ndf가 붙는 보조 데이터 파일도 주 파일 그룹에 추가될 수 있습니다. 데이터베이스를 만들 때 특별히 파일 그룹을 만들지 않았다면 모든 데이터 파일들은 바로 주 파일 그룹에 포함됩니다.
2) 사용자 파일 그룹 (User-defined Filegroup)
주 파일 그룹 외에 사용자가 만든 파일 그룹입니다. 사용자 파일 그룹이 없어도 데이터베이스는 운영이 되지만 주 파일 그룹에는 시스템 테이블만 기록되게 하고, 추가로 사용자 파일 그룹을 만들어 이 그룹 안에 ndf 확장자를 갖는 보조 데이터 파일을 위치시켜 사용자 테이블이 이 데이터 파일에 저장되게 하는 것이 좋습니다. 주 파일 그룹은 하나만 존재할 수 있지만, 사용자 파일 그룹은 여러 개 존재할 수 있습니다.
3) 기본 파일 그룹 (Default Filegroup)
주 파일 그룹과 사용자 파일 그룹들 중에 하나가 기본 파일 그룹이 될 수 있습니다. 테이블과 인덱스와 같은 개체를 생성할 때 명시적으로 파일 그룹을 지정하지 않으면 어떤 파일 그룹으로 자동으로 배정될 지를 정해 놓은 파일 그룹입니다. 기본 파일에 대한 기본 파일 그룹은 주 파일 그룹입니다. 사용자 파일 그룹을 이용해서 데이터베이스를 만들었다면, 사용자 파일 그룹 중의 하나를 기본 파일 그룹으로 지정해 주는 것이 좋습니다.
파일 그룹 만들기, 추가하기
- 개체 탐색기 > [데이터베이스] > 우클릭 > [속성] > [파일 그룹] 선택 > 추가
- 쿼리문 이용
ALTER DATABASE TestDB ADD FILEGROUP TestFG
ALTER DATABASE TestDB ADD FILE (
NAME = 'TestDB_01'
FILENAME = 'D:\Data\TestDB_01.ndf'
SIZE = 100MB
MAXSIZE = 500MB
FILEGROWTH = 10MB
) TO FILEGROUP TestFG
--기본 파일 그룹 지정
ALTER DATABASE TestDB MODIFY FILEGROUP TestFG DEFAULT
'DB 기본 개념 다지기' 카테고리의 다른 글
데이터베이스 관리 - 중요 옵션, 파일 크기 증가/축소, DB 분리와 연결 (1) | 2023.07.05 |
---|---|
데이터베이스 - 스키마 (0) | 2023.07.05 |
데이터베이스 만들기 - 개체탐색기 이용 또는 CREATE DATABASE 문 (0) | 2023.06.30 |
데이터베이스를 구성하는 파일 종류 mdf, ndf, ldf, Page, Extents (0) | 2023.06.30 |
예제 데이터베이스 - AdventureWorks, WideWorldImpoters, Northwind (0) | 2023.06.28 |