SQL Server : 시스템 테이블 전용 파일 그룹?


11

회사 표준 중 하나는 사용자 테이블 / 인덱스에 대해 별도의 파일 그룹 / 파일을 갖는 것입니다. 이것은 디폴트로 설정되므로 CREATE TABLE 문을 규정 할 필요가 없습니다.

이렇게 생겼어요

  • fileid 1 = 시스템 테이블, MDF
  • 파일 ID 2 = t-log = LDF
  • 파일 ID 3 = 사용자 항목 = NDF

왜 이것이 의무화되었는지에 대한 원래의 정당성을 이해하도록 도울 수 있습니까?


내가 깨끗하게 와서 부두라고 생각합니다. 암 I의 잘못 ...?

편집 : 파일 그룹을 사용하여 인덱스 / 파티션 / 아카이브를 분리하는 방법과 단편을 복원하는 방법을 알고 있습니다. 이 질문은 시스템 테이블에 대해서만 동일한 볼륨에서 별도의 파일 그룹을 사용하는 것에 관한 것입니다.

답변:


9

Microsoft의 70-432 교육 서적에 따르면 "주 파일 그룹에 개체를 배치하지 않는 주된 이유는 가능한 한 I / O를 최대한 격리하는 것입니다. 시스템 개체의 데이터는 데이터만큼 자주 변경되지 않습니다." 기본 데이터 파일에 대한 쓰기 작업을 최소화하면 하드웨어 오류로 인한 손상이 발생할 가능성이 줄어들고 기본 파일 그룹의 상태에 따라 데이터베이스의 상태가 결정되므로 가용성을 높일 수 있습니다 기본 파일 그룹에 대한 변경 사항을 최소화합니다. "

그래서, 당신이 할대로 그것을 가져 가라. 다른 사람들은 이것이 특정 상황에서는 필요하지 않으며 물론 유지하기가 더 쉽다고 말합니다. 방금 Microsoft의 추론을 제공한다고 생각했습니다.


합리적이고 일부는 정당화됩니다. 동의합니다
gbn

1
또 다른 이유는 PARTIAL 데이터베이스 복원을 통해 PRIMARY 파일 그룹과 선택한 다른 파일 그룹을 복원하여 올바르게 설계된 VLDB를 더 빨리 복구 할 수 있기 때문입니다. 보관 / 보조 파일 그룹을 나중에 복원 할 수 있습니다.
MartinC

@ MartinC : 부분 복원 등에 대해서는 알고 있지만 시스템 테이블을 명시 적으로 분리하는 논리를 이해하지 못했습니다. 수행, 보관, 유지 관리, 파티셔닝 등을위한 파일 그룹. 그러나 시스템 테이블? 제라드는 .. 지금까지 최선의 설명을 제공
GBN

데이터베이스 전체가 매우 큰 경우 기본 파일 그룹은 기본 데이터보다 더 정기적 인 백업을 가질 수 있습니다. 파일 그룹 백업에 테일을 더한 후 복원에는 테일 로그 백업과 기본 파일 그룹 및 트랜잭션 로그의 복원 만 필요합니다. 시스템 테이블이 작기 때문에 전체 데이터베이스에 대해이 작업을 수행하는 것보다 빠른 복구 프로세스이므로 문제 발생시 다운 타임을 줄일 수 있습니다.
MartinC

12

이것으로 성능이 향상되지는 않지만 회복 적으로 얻을 수있는 이점이 있습니다. 시스템 테이블에서 파일 손상이 발생하면 데이터베이스가 손실됩니다. 사용자 데이터를 별도의 파일 그룹에 보관하면 복원하는 동안 나머지 데이터베이스를 온라인 상태로 유지하는 파일 만 복원 할 수 있습니다 (여기서는 Enterprise Edition이라고 가정).

이것이 그들이 이것을 진술하는 이유라면 말할 수는 없지만 이것은 PRIMARY 파일 그룹의 시스템 객체만으로 여러 파일 그룹을 갖는 이점이 있습니다.

그러나 AutoShrink를 사용하도록 설정해야한다고 정크에서 쫓아 야합니다.


이에 대한 자세한 내용은 온라인 설명서에서 Online Piecemeal Restore를 검색하십시오.
브렌트 오자르

1
나는 항상 2 개의 파일 그룹이 동일한 볼륨 (SAN)에 있다고 가정하면 이것이 부두라고 생각했습니다. 부패의 위험이 너무 높습니까? (실제 운영 DBA는 AutoShrink를 false로 설정)
gbn

페이지가 디스크에 기록 될 때 스토리지가 두꺼워 지므로 손상이 발생하면 단일 파일 내에서 단일 페이지가됩니다. 데이터베이스 손상의 99.9999 %와 같은 것이 스토리지 문제입니다. 나머지 문제 중 1/2은 나쁜 메모리이고 나머지는 SQL 버그입니다. 데이터베이스가 커지면 (멀티 TB) 멀티 TB 데이터베이스를 복구하는 데 며칠이 걸리므로 더 중요합니다.
mrdenny

시스템 객체가 기본 파일 그룹에만있는 경우 나중에 필요한 경우 다음을 수행 할 수 있다고 생각하는 것이 옳지 않습니까? 다른 파일 그룹에 x 개의 추가 파일을 작성하십시오. 기존 데이터 파일에서 데이터를 마이그레이션하여 이러한 파일을 비례 적으로 채 웁니다.
Ally Reilly

4

잘 모르겠습니다. 회사 표준을 정당화 할 누군가를 요구하고 있습니까? 회사의 표준 문서를 작성한 사람은 왜 이것이 수행되는지에 대해 약간의 빛을 비출 수 있다고 생각합니다.

즉, 일부 상점에서 사용자 데이터에서 시스템 데이터를 분리하려는 경우는 드 unusual니다. 전용 디스크 세트와 함께 사용하면 성능이 약간 향상 될 수 있습니다.


감사. 그것을 정당화하지 말고 설명하십시오. AutoShrink를 사용하는 것과 동일한 DB 엔지니어링 팀입니다. 주어진 시스템 테이블이 몇 MB를 차지하고 어쨌든 메모리에있을 것입니다. 성능 향상이 있다고 생각하십니까?
gbn
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.