파일 및 파일 그룹 사용

SQL Server에서는 운영 체제 파일 집합에 대해 데이터베이스를 매핑합니다. 데이터 및 로그 정보는 동일한 파일에 섞여서 존재하지 않으며 개별 파일들은 하나의 데이터베이스에서만 사용됩니다. 파일 그룹은 명명된 파일 모음이며 백업 및 복원 작업과 같은 데이터 배치 및 관리 작업을 단순화하는 데 사용됩니다. 자세한 내용은 파일 및 파일 그룹 아키텍처을 참조하십시오.

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

파일 그룹은 각 파일 그룹에 있는 모든 파일에 대해 균형 잡힌 채우기 전략을 사용합니다. 파일 그룹에 데이터를 쓸 때 SQL Server 데이터베이스 엔진은 첫 번째 파일이 꽉 찰 때까지 모든 데이터를 쓰는 대신 파일 그룹 내의 각 파일에 해당 파일의 사용 가능한 공간에 비례하는 양을 씁니다. 그런 후에 다음 파일에 씁니다. 예를 들어 f1 파일에는 100MB의 빈 공간이 있고 f2 파일에는 200MB의 빈 공간이 있으면 f1 파일에서는 하나의 익스텐트가 할당되고 f2 파일에서는 두 개의 익스텐트가 할당되는 식입니다. 이렇게 하면 거의 동시에 두 파일이 꽉 차며 간단한 스트라이프가 수행됩니다.

파일 그룹의 모든 파일이 꽉 차는 즉시 데이터베이스 엔진은 라운드 로빈 방식으로 파일을 한 번에 하나씩 자동으로 확장하여 데이터를 추가합니다. 단, 이것은 데이터베이스가 자동으로 증가하도록 설정된 경우에만 해당합니다. 예를 들어 파일 그룹이 3개의 파일로 구성되고 모두 자동 증가하도록 설정되었다고 가정합니다. 파일 그룹에 속한 모든 파일의 공간이 꽉 차면 첫 번째 파일만 확장됩니다. 첫 번째 파일이 꽉 차고 파일 그룹에 더 이상 데이터를 쓸 수 없게 되면 두 번째 파일이 확장됩니다. 두 번째 파일이 꽉 차고 파일 그룹에 더 이상 데이터를 쓸 수 없게 되면 세 번째 파일이 확장됩니다. 세 번째 파일이 꽉 차고 파일 그룹에 더 이상 데이터를 쓸 수 없게 되면 첫 번째 파일이 다시 확장되는 식입니다.

데이터베이스 성능 향상

파일과 파일 그룹을 사용하면 여러 디스크, 여러 디스크 컨트롤러 또는 RAID(Redundant Array of Independent Disks) 시스템에 데이터베이스를 만들 수 있기 때문에 데이터베이스 성능이 향상됩니다. 예를 들어 컴퓨터에 4개의 디스크가 있으면 각 디스크마다 하나의 파일을 두어 3개의 데이터 파일과 한 개의 로그 파일로 구성된 데이터베이스를 만들 수 있습니다. 그러면 데이터에 액세스할 때 4개의 읽기/쓰기 헤드가 동시에 병렬로 데이터에 액세스합니다. 따라서 데이터베이스 작업이 빨라집니다. 하드웨어 솔루션에 대한 자세한 내용은 데이터베이스 성능을 참조하십시오.

파일 및 파일 그룹을 사용하면 특정 파일 그룹에 테이블을 만들 수 있으므로 데이터를 원하는 대로 배치할 수도 있습니다. 이렇게 하면 특정 테이블의 모든 I/O가 특정 디스크로 집중되므로 성능이 향상됩니다. 예를 들어 많이 사용되는 테이블은 한 디스크에 있는 한 파일 그룹의 한 파일에 배치하고 덜 사용되는 테이블은 두 번째 디스크에 있는 또 다른 파일 그룹의 다른 파일에 배치할 수 있습니다.

백업 및 복원 전략 구현

여러 파일 그룹으로 구성된 데이터베이스는 증분 복원이라는 프로세스를 통해 단계별로 복원할 수 있습니다. 증분 복원 작업은 모든 복구 모델에서 가능하지만 단순 모델보다는 전체 및 대량 로그 모델에 대해 더 융통성이 있습니다. 증분 복원 시나리오에는 데이터 복사, 다시 실행(롤포워드) 및 실행 취소(롤백)라는 모두 3개의 복원 단계가 있습니다. 자세한 내용은 증분 복원 수행을 참조하십시오.

여러 파일 그룹을 사용할 때 데이터베이스의 파일을 개별적으로 백업하고 복원할 수 있습니다. 단순 복구 모델에서 파일 백업은 읽기 전용 파일에만 허용됩니다. 파일 백업을 사용하면 데이터베이스의 나머지 부분을 복원하지 않고 손상된 파일만 복원할 수 있으므로 복구 속도를 높일 수 있습니다. 예를 들어 데이터베이스가 여러 디스크에 물리적으로 저장된 여러 파일로 구성되어 있고 한 디스크에 오류가 있으면 오류가 있는 디스크의 파일만 복원하면 됩니다. 자세한 내용은 BACKUP(Transact-SQL)을 참조하십시오.

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

다음 규칙은 파일과 파일 그룹에 적용됩니다.

  • 파일이나 파일 그룹은 둘 이상의 데이터베이스에서 사용할 수 없습니다. 예를 들어 sales 데이터베이스의 데이터와 개체가 있는 sales.mdfsales.ndf 파일은 다른 데이터베이스에서 사용할 수 없습니다.

  • 파일은 한 파일 그룹의 멤버만 될 수 있습니다.

  • 트랜잭션 로그 파일은 파일 그룹의 일부가 될 수 없습니다.

권장 사항

다음은 파일 및 파일 그룹 작업 시 일반적으로 권장되는 사항입니다.

  • 대부분의 데이터베이스에는 하나의 데이터 파일과 하나의 트랜잭션 로그 파일만 있으면 됩니다.

  • 여러 파일을 사용할 때는 두 번째 파일 그룹을 만들어 파일을 추가하고 이 파일 그룹을 기본 파일 그룹으로 만듭니다. 이렇게 하면 주 파일에는 시스템 테이블과 개체만 있게 됩니다.

  • 성능을 극대화하려면 가능한 여러 개의 사용 가능한 로컬 물리적 디스크에 파일이나 파일 그룹을 만듭니다. 디스크 공간이 많이 필요한 개체는 여러 파일 그룹에 배치합니다.

  • 특정 물리적 디스크에 개체를 배치할 수 있도록 파일 그룹을 사용합니다.

  • 동일한 조인 쿼리에서 사용되는 여러 테이블은 여러 파일 그룹에 배치합니다. 이렇게 하면 조인된 데이터에서 병렬 디스크 I/O 검색을 하기 때문에 성능이 향상됩니다.

  • 자주 액세스되는 테이블과 해당 테이블에 속한 비클러스터형 인덱스는 여러 파일 그룹에 배치합니다. 이렇게 하면 파일이 여러 물리적 디스크에 있을 경우 병렬 I/O가 수행되기 때문에 성능이 향상됩니다.

  • 트랜잭션 로그 파일은 다른 파일 및 파일 그룹과 동일한 물리적 디스크에 배치하지 않습니다.