SQL Server 2008 R2 분할-동일한 파일 그룹, 1 파일, 2 partition_number-도움말


10

SQL Server에서 파티셔닝을 처음 시작한 것은 환상적인 Brent Ozar 안내서에서 배웠습니다. :)

몇 번 나는 이상한 시나리오에 부딪쳤다. 내가 실행할 때 :

SELECT *
FROM ph.FileGroupDetail
ORDER BY partition_number
Go

동일한 파일 그룹이 2 개의 서로 다른 partition_number로 두 번 표시됩니다. 하나는 범위 값이있는 끝에 올바르게, 다른 하나는 시작 범위가 null 인 range_value에 있습니다.

이미지를 확대하려면 여기를 클릭하십시오

여기에 이미지 설명을 입력하십시오

몇 가지 질문 :

  1. 내가 어떻게 잘못 되었습니까?

  2. 문제를 해결하는 방법은 처음에 이미 빈 파티션이 있으므로 처음에 하나를 제거하는 방법을 의미합니다.

파일이 비어있을 때 파일과 파일 그룹을 삭제하려고 시도했지만 파일 그룹이 파일을 삭제할 수 없다고 말했습니다.

누군가 어떻게 이런 일이 발생했는지, 파티션 2 항목을 제거하는 방법을 설명해 주시겠습니까?


3
스티브, 파티션 구성표와 기능을 게시 할 수 있습니까?
PseudoToad

@steve-Gizmo가 요청한 파티션 구성표와 기능을 게시하는 데 정말 유용합니다.
Thronk

1
sys.partitions에서 partition_id도 노출 할 수 있습니까?
user_0

답변:


3

결과는 파티션 구성표 NEXT USED파일 그룹이 DailyAlbertFG30으로 설정 될 때 명시적인 NULL 파티션 경계가 함수에 추가되었음을 나타냅니다 . 또한 DailyAlbertFG2가 사용되지 않습니다. 해당 파일 그룹에 한 번에 병합 된 파티션이있을 수 있습니다.

아래는 NULL 경계를 가진 FG30 파티션을 만드는 방법을 보여주는 스크립트입니다. NULL 경계가 실수로 추가되었을 수 있습니다.

CREATE PARTITION FUNCTION DailyAlbertPF1 (datetime2(3)) AS RANGE RIGHT FOR VALUES();
GO
CREATE PARTITION SCHEME DailyAlbertPS1 AS PARTITION DailyAlbertPF1 ALL TO ([DailyAlbertFG1]);
GO
CREATE TABLE dbo.FactAgentAlbertPortalSessionEntries
    (
      DateTimeColumn datetime2(3)
    )
ON  DailyAlbertPS1(DateTimeColumn);
GO

DECLARE @FileGroupNumber int = 1;
DECLARE @DateTimeBoundary datetime2(3) = '2015-04-15T00:00:00.000';
DECLARE @SQL nvarchar(MAX);
WHILE @DateTimeBoundary <= '2015-05-14T00:00:00.000'
BEGIN
    SET @SQL = N'ALTER PARTITION SCHEME DailyAlbertPS1 NEXT USED DailyAlbertFG' + CAST(@FileGroupNumber AS nvarchar(5)) + N';';
    EXEC(@SQL);
    ALTER PARTITION FUNCTION DailyAlbertPF1() SPLIT RANGE(@DateTimeBoundary);
    SET @DateTimeBoundary = DATEADD(day, 1, @DateTimeBoundary);
    SET @FileGroupNumber += 1;
END;
--add NULL boundary on DailyAlbertFG30
SET @DateTimeBoundary = NULL;
ALTER PARTITION SCHEME DailyAlbertPS1 NEXT USED DailyAlbertFG30;
ALTER PARTITION FUNCTION DailyAlbertPF1() SPLIT RANGE(@DateTimeBoundary);
GO

0
  1. 모르겠어요 이것은 드문 경우가 아닙니다. 파일 그룹에 파티션을 자유롭게 할당 할 수 있습니다. 1 : 1 일 필요는 없습니다. 실수로 잘못된 FG로 재구성했거나 짧은 시간 동안 구성이 잘못되었을 수 있습니다. 이 불규칙성은 걱정할 필요는 없지만 물론 정리할 수 있습니다.
  2. 빈 파티션 중 하나를 다른 파티션에 병합하여 빈 파티션 중 하나를 제거 할 수 있습니다. 웹에서이 작업을 수행하는 방법에 대한 훌륭한 안내서가 있습니다. 이 경우에는 수행하기 쉽고 즉각적입니다. 파티션을 재 구축하여 원하는 FG로 파티션을 이동할 수도 있습니다. 빈 파티션을 즉시 재 구축합니다.

청소가 끝나면 빈 FG를 찾으면 떨어 뜨릴 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.