MS-SQL 에는 파일 그룹이라는 개념이 있습니다.
논리적인 관점으로 특정 데이터베이스에는 PRIMARY 라는 하나의 기본 그룹이 있고 그 안에 하나의 데이터 파일이 있습니다.
그리고 트랜잭션 로그 파일도 있는데, 이는 파일 그룹과 관련이 없습니다.
즉, 파일 2개와 그룹 1개인 최소한의 구조로 구성되며, 기본적인 파일 그룹 PRIMARY 의 이름은 변경하거나 제거할 수 없습니다.
물리적인 관점에서 본다면 생성된 데이터베이스는 하나의 하드디스크에 데이터 파일과 트랜잭션 로그 파일로 구성됩니다.
하지만 동시다발적으로 데이터가 대규모로 입력될 때 하나의 디스크에 동시에 접근한다면 성능은 느려질 수 밖에 없습니다.
따라서 데이터 파일과 트랜잭션 로그 파일은 기본적으로 서로 다른 디스크에 분리해서 관리해야 합니다.
하나의 그룹에 여러 개의 데이터 파일을 사용하는 것 보다는, 파일을 별도의 그룹으로 분리하는 것이 바람직합니다.
또 분리된 그룹의 파일을 서로 다른 디스크에 배치한다면 디스크의 입출력 속도가 향상되며 SQL Server 성능이 향상됩니다.
예를 들면, A 라는 테이블은 PRIMARY 파일 그룹에 생성하고, 인덱스는 SECONDARY 파일 그룹에 생성한다면, 이 테이블을 검색할 때 성능 향상을 꽤할 수 있습니다.
왜냐하면 테이블을 검색할 때는 대개 인덱스도 동시에 접근하게 되므로, 테이블과 인덱스를 서로 다른 파일에 저장했을 경우에는 서로 다른 디스크에 동시에 접근하게 되는 효과를 내게 되기 때문입니다.
만약 하나의 파일 그룹에 여러 개의 데이터 파일이 있을 경우에는 RAID0 방식과 비슷하게 동시에 나눠서 저장됩니다.
PRIMARY 그룹에 A01_DB 데이터 파일과, A02_DB 데이터 파일이 있다면 공평하게 나눠서 동시에 저장됩니다.
따라서 하나의 그룹에 소속된 여러 개의 파일을 각기 다른 디스크에 저장하면 저장 성능이 높아집니다.
파일 그룹에 관한 쿼리는 아래 url 을 참고해 주세요.
GO
위 코드를 간략하게 설명드리면,
PRIMARY 데이터 파일 그룹 하단에 MyDB_FG1 의 파일 그룹을 생성합니다. 해당 그룹에는 MyDB_FG1_Dat1 과 MyDB_FG1_Dat2의 데이터 파일이 포함됩니다.
'SQL Server > SQL Server 기타' 카테고리의 다른 글
[MSSQL] CREATE TABLE AS SELECT 출력된 결과물로 테이블 생성하기 (0) | 2019.03.27 |
---|---|
[MsSQL] sp_readerrorlog 와 xp_readerrorlog 의 차이점 (0) | 2019.03.20 |
[MsSQL] 데이터베이스의 생성과 파일 구조 (0) | 2019.03.17 |
[MsSQL] 시스템 데이터베이스의 종류와 역할 (2) | 2019.03.17 |
[MsSQL] 쿼리 .. 와 . 의 차이 double dot vs single dot (0) | 2019.03.13 |