파일 그룹
구성
논리적 관점으로 데이터베이스에는 PRIMARY라는 하나의 기본 파일 그룹이 있고 그 안에 하나의 데이터 파일이 있다.
그리고 트랜잭션 로그 파일도 포함하고 있지만, 파일 그룹과는 관련이 없다.
즉, 파일 2개와 그룹 1개인 최소한의 구조로 구성되고, 기본적인 파일 그룹 PRIMARY의 이름은 변경 및 제거할 수 없다.
물리적인 관점에서 본다면 생성된 데이터베이스는 하나의 하드디스크에 데이터 파일과 트랜잭션 로그파일로 구성된다.
사용 이유
데이터베이스에 동시다발적으로 데이터가 대규모로 입력되는 상황이 발생한다고 가정해본다.
데이터베이스에서 하나의 디스크로 동시에 접근한다면 성능이 저하될 수 밖에 없다.
이때 파일 그룹을 사용하면 데이터를 분산시켜 성능을 향상시킬 수 있다.
권장 사항
하나의 그룹에 여러 개의 데이터 파일을 사용하는 것 보다는 파일을 별도의 그룹으로 분리하여 관리하는 것을 권장한다.
또 분리된 그룹의 파일을 서로 다른 디스크에 배치한다면 디스크의 입출력 속도가 향상되고 SQL Server의 성능도 향상된다.
더 자세한 파일 그룹 권장 사항은 공식 홈페이지에서 확인 가능하다.
데이터베이스 파일 및 파일 그룹 - SQL Server
데이터베이스 파일 및 할당 및 관리 목적으로 SQL Server에서 파일 그룹을 만드는 방법에 대해 알아봅니다. 예제, 규칙, 권장 사항을 살펴봅니다.
learn.microsoft.com
사용 예시
A라는 테이블은 PRIMARY 파일 그룹에 생성하고, 인덱스는 SECONDARY 파일 그룹에 생성한다면, 이 테이블을 검색할 때 성능이 향상 된다.
테이블 검색 시에 대개 인덱스도 동시에 접근하게 되므로, 테이블과 인덱스를 서로 다른 파일에 저장했을 경우에는 서로 다른 디스크에 동시에 접근하게 되는 효과를 내게 되기 때문이다.
DB 및 파일 그룹 생성
다음은 MSSQL 공식 문서에 나와있는 예제 SQL 쿼리이다.
'MyDB'라는 데이터베이스를 생성하고 'MyDB_FG1'라는 파일 그룹을 생성한 후 기본 파일 그룹으로 설정한다.
USE master;
GO
-- Create the database with the default data
-- filegroup, filestream filegroup and a log file. Specify the
-- growth increment and the max size for the
-- primary data file.
CREATE DATABASE MyDB
ON PRIMARY
( NAME='MyDB_Primary',
FILENAME=
'c:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\data\MyDB_Prm.mdf',
SIZE=4MB,
MAXSIZE=10MB,
FILEGROWTH=1MB),
FILEGROUP MyDB_FG1
( NAME = 'MyDB_FG1_Dat1',
FILENAME =
'c:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\data\MyDB_FG1_1.ndf',
SIZE = 1MB,
MAXSIZE=10MB,
FILEGROWTH=1MB),
( NAME = 'MyDB_FG1_Dat2',
FILENAME =
'c:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\data\MyDB_FG1_2.ndf',
SIZE = 1MB,
MAXSIZE=10MB,
FILEGROWTH=1MB),
FILEGROUP FileStreamGroup1 CONTAINS FILESTREAM
( NAME = 'MyDB_FG_FS',
FILENAME = 'c:\Data\filestream1')
LOG ON
( NAME='MyDB_log',
FILENAME =
'c:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\data\MyDB.ldf',
SIZE=1MB,
MAXSIZE=10MB,
FILEGROWTH=1MB);
GO
ALTER DATABASE MyDB
MODIFY FILEGROUP MyDB_FG1 DEFAULT;
GO
-- Create a table in the user-defined filegroup.
USE MyDB;
CREATE TABLE MyTable
( cola int PRIMARY KEY,
colb char(8) )
ON MyDB_FG1;
GO
-- Create a table in the filestream filegroup
CREATE TABLE MyFSTable
(
cola int PRIMARY KEY,
colb VARBINARY(MAX) FILESTREAM NULL
)
GO
테이블 생성 시 파일 그룹을 별도로 지정하고 싶다면 다음의 쿼리를 사용하면 된다.
CREATE TABLE 테이블명 (
id int PRIMARY KEY,
)
ON 파일 그룹명;
생성한 테이블에 지정된 파일 그룹 확인 시 다음의 쿼리를 사용하면 된다.
sp_help 테이블명;
참고 사이트
데이터베이스 파일 및 파일 그룹 - SQL Server
데이터베이스 파일 및 할당 및 관리 목적으로 SQL Server에서 파일 그룹을 만드는 방법에 대해 알아봅니다. 예제, 규칙, 권장 사항을 살펴봅니다.
learn.microsoft.com
[MsSQL] 파일그룹이란?
MS-SQL 에는 파일 그룹이라는 개념이 있습니다. 논리적인 관점으로 특정 데이터베이스에는 PRIMARY 라는 하나의 기본 그룹이 있고 그 안에 하나의 데이터 파일이 있습니다.그리고 트랜잭션 로그 파
mozi.tistory.com
'🛢️DataBase > RDBMS' 카테고리의 다른 글
[MSSQL] Datetime 데이터 형식을 조건문에 사용하기(feat. Convert) (0) | 2024.05.20 |
---|---|
[MSSQL] DB Link (MySQL to MSSQL) (0) | 2024.05.15 |
[Maria DB] Maria DB 사용해보기 (0) | 2024.05.14 |
[Maria DB] MariaDB 설치 및 환경 변수 설정 (0) | 2024.05.14 |
[MSSQL] 저장 프로시저(Stored Procedure) 포함 내용 검색 (0) | 2024.03.13 |
댓글