분할된 테이블 및 인덱스 수정
다음과 같은 방법으로 분할된 테이블과 인덱스를 수정할 수 있습니다.
- 파티션 함수에 사용되는 모든 테이블이나 인덱스를 다시 분할하여 파티션 함수를 수정합니다.
- 새로 추가되는 파티션을 보관할 파일 그룹을 지정하여 파티션 구성표를 수정합니다.
- 분할되지 않은 테이블을 분할된 테이블로 변환합니다.
- 분할된 테이블을 분할되지 않은 테이블로 변환합니다.
- 파티션을 추가, 이동 또는 제거하여 데이터를 전송합니다.
파티션 함수 수정
분할된 테이블이나 인덱스의 파티션 함수에 지정된 파티션 수를 하나씩 더하거나 빼서 테이블이나 인덱스가 분할되는 방식을 변경할 수 있습니다.
파티션 추가는 기존의 한 파티션을 두 파티션으로 "분할"하고 새 파티션의 경계를 다시 정의하는 것입니다. 파티션 삭제는 두 파티션의 경계를 하나로 "병합"하는 것입니다. 이 과정에서 한 파티션은 다시 채워지고 다른 한 파티션은 할당되지 않은 상태로 남게 됩니다.
중요: |
---|
파티션을 추가할 때 파일 그룹이 있어야 하며 새 파티션을 보관하도록 NEXT USED 속성이 표시되어 있어야 합니다. 파티션 구성표에서 NEXT USED 파일 그룹을 지정하는 방법은 이 항목의 뒷부분에 나오는 파티션 구성표 수정을 참조하십시오. |
ALTER PARTITION FUNCTION은 한 파티션을 둘로 분할하거나 두 파티션을 하나로 병합하는 데만 사용할 수 있습니다. 10개의 파티션을 5개로 줄이는 것과 같이 테이블이나 인덱스가 분할되는 방식을 변경하려면 다음 옵션 중 하나를 사용합니다. 시스템 구성에 따라 옵션의 리소스 소비량이 다를 수 있습니다.
원하는 파티션 함수로 분할된 테이블을 새로 만들고 INSERT INTO...SELECT FROM 문을 사용하여 기존 테이블의 데이터를 새 테이블에 삽입합니다.
힙에 분할된 클러스터형 인덱스를 만듭니다.
[!참고] 분할된 인덱스를 삭제하면 힙이 분할됩니다.
Transact-SQL CREATE INDEX 명령에 DROP EXISTING = ON 절을 사용하여 기존의 분할된 인덱스를 삭제하고 다시 작성합니다.
ALTER PARTITION FUNCTION 문의 시퀀스를 수행합니다.
SQL Server 2005에서는 파티션 함수 수정을 위한 복제 지원을 제공하지 않습니다. 게시 데이터베이스의 파티션 함수를 변경하려면 구독 데이터베이스에서 직접 파티션 함수를 수정해야 합니다.
파티션 함수를 수정하려면
파티션 구성표 수정
분할된 테이블에 추가되는 다음 파티션을 보관할 파일 그룹을 지정하여 파티션 구성표를 수정할 수 있습니다. 이렇게 하려면 파일 그룹에 NEXT USED 속성을 할당합니다. 빈 파일 그룹이나 파티션이 이미 있는 파일 그룹에 NEXT USED 속성을 할당할 수 있습니다. 즉, 파일 그룹에 한 개 이상의 파티션을 보관할 수 있습니다.
파티션 구성표를 수정하려면
분할되지 않은 테이블을 분할된 테이블로 변환
분할되지 않은 기존 테이블을 분할된 테이블로 바꾸는 데는 두 가지 방법이 있습니다.
첫 번째 방법은 CREATE INDEX 문을 사용하여 테이블에 분할된 클러스터형 인덱스를 만드는 것입니다. SQL Server에서는 기본적으로 테이블을 삭제하고 클러스터형 인덱스 형식으로 테이블을 다시 만들기 때문에 이 방법은 테이블에 클러스터형 인덱스를 만드는 것과 유사합니다. 테이블에 분할된 클러스터형 인덱스가 이미 적용되어 있는 경우 CREATE INDEX에 DROP EXISTING = ON 절을 사용하여 해당 인덱스를 삭제하고 파티션 구성표의 인덱스를 다시 작성할 수 있습니다.
클러스터형 인덱스에 대한 자세한 내용은 클러스터형 인덱스 디자인 지침을 참조하십시오.
두 번째 방법은 Transact-SQL ALTER TABLE SWITCH 문을 사용하여 테이블의 데이터를 한 파티션만 있고 범위가 분할된 테이블로 전환하는 것입니다. 변환을 수행하기 전에 분할된 테이블이 있어야 하며 테이블의 단일 파티션이 비어 있어야 합니다. 파티션을 전환하는 방법은 파티션 전환을 사용하여 데이터를 효율적으로 전송을 참조하십시오. 분할된 테이블로 수정되면 위의 파티션 함수 수정에서 설명한 대로 파티션 함수를 수정하여 파티션을 추가할 수 있습니다.
기존 테이블을 분할된 테이블로 변환하려면
분할된 테이블을 분할되지 않은 테이블로 변환
분할된 테이블을 분할되지 않은 테이블로 변환하려면 테이블이 한 파티션으로만 구성되도록 분할된 테이블의 파티션 함수를 수정하면 됩니다. 기술적으로는 여전히 분할된 테이블이지만 이 상태는 테이블에 대해 수행하려는 후속 작업에는 영향을 주지 않습니다.
테이블에 분할된 클러스터형 인덱스가 이미 적용된 경우 해당 인덱스를 삭제하고 분할되지 않은 인덱스로 다시 작성하여 동일한 결과를 얻을 수 있습니다. 이렇게 하려면 Transact-SQL CREATE INDEX 명령에 DROP EXISTING = ON 절을 사용합니다.
분할된 테이블을 파티션이 없는 표준 테이블로 변환하려면
파티션 전환을 사용하여 데이터 전송
Transact-SQL ALTER TABLE...SWITCH 문을 사용하여 분할된 테이블 간에 데이터 블록을 빠르고 효율적으로 전송할 수 있습니다. 자세한 내용은 파티션 전환을 사용하여 데이터를 효율적으로 전송을 참조하십시오.