DB 파일의 용량 관리 때문에 고민을 하던 중.. 아래 링크에서 특정 부분이 헷갈리네요.
http://msdn.microsoft.com/ko-kr/library/ms189563(v=sql.90).aspx
링크 하단부에 보시면..
사용자 정의 파일 그룹을 만들어 데이터 파일을 그룹화함으로써 관리, 데이터 할당 및 배치를 간편하게 수행할 수 있습니다.
예를 들어 3개의 파일(Data1.ndf, Data2.ndf 및 Data3.ndf)을 3개의 디스크 드라이브에 하나씩 만들어서
fgroup1이라는 파일 그룹에 할당할 수 있습니다.
그런 다음 fgroup1 파일 그룹에 한 개의 테이블을 만들 수 있습니다.
이렇게 하면 해당 테이블의 데이터에 대한 쿼리가 3개의 디스크로 분산되므로 성능이 향상됩니다.
RAID(Redundant Array of Independent Disks) 스트라이프 세트에 단일 파일을 만들어 사용해도
이와 동일한 수준으로 성능이 향상될 수 있습니다.
저는 여태까지 테이블 하나당 단위 파일 하나에만 저장 되는줄 알았는데..
여러개의 ndf 파일을 만들고, 파일 그룹을 하나로 묶으면 테이블 하나가 여러개의 파일에 분산 저장이 된다는 의미인걸까요?
즉, 현재 Primary 그룹에 있는 테이블 하나의 용량이 매우 커서 요거때문에 고민인데..
Primary 그룹에 다른 디스크 경로에 있는 ndf 파일을 하나만 추가해주면 자동으로 ndf파일로 해당 테이블의
데이터가 저장이 될까요?
Comment 2
-
이스트럭(강동운)
2014.05.26 18:29
안녕하세요.
파일 그룹도 여러개 만들 수 있고.. 그 안에 파일도 여러개 만들 수 있습니다.
예를 하나 살펴봅시다~!
게임디비와 로그디비를 두개가 아닌 하나의 디비로.. PRIMARY로 사용하고 이게 수백기가라고 가정하면..
장애 발생시에.. PRIMARY를 복구해야.. 데이터베이스가 올라옵니다.
따라서 복원에 많은 시간이 소요될 수 있습니다.
SQL Server 스탠다드가 아닌 엔터프라이즈로 사용 중이고..
하나의 데이터베이스지만.. 파일 그룹에 따라.. 게임디비와 로그디비가 나뉜경우에..
PRIMARY만 먼저 복원하면 디비가 올라옵니다.
이때.. 게임디비만 복구를 시도하고... 게임을 선오픈 할 수 있습니다.
엔터프라이즈 외에... 다른 장점도 있습니다.
여러 파일로 나누게 되면... 각각의 파일을 용도에 따라 다른 디스크에 위치시킬 수도 있기 때문에... 디스크에 hot spot이 발생했을때..
I/O를 분산할 수 있는 장점이 있습니다.
하지만 관리의 이슈가 생깁니다.
아래 처럼.. 인덱스 혹은 테이블 생성시 반드시 파일그룹명을 붙여줘야 합니다.
그렇지 않으면 기본 파일그룹으로 지정이 되는데.. 변경하지 않는다면.. PRIMARY로 저장됩니다.
CREATE INDEX ~~~ ON [파일그룹명]
감사합니다. ^^
테이블이나 인덱스는 파일 그룹 위에 만들어집니다.
DB를 만들면서 별다른 설정을 안했으면 MDF파일 하나가 PRIMARY FILE GROUP에 만들어졌을테고
우리는 항상 PRIMARY FILE GROUP 위에 테이블을 만들게 되죠.
여기에 파일을 추가 하면 한 파일 그룹위에 여러 파일이 존재하면
테이블이나 인덱스는 하위 파일에 분산 저장이 되고 레이드 장비 없이도 레이드 효과를 볼 수 있습니다.