CREATE PARTITION SCHEME(Transact-SQL)
적용 대상: SQL Server Azure SQL 데이터베이스 Azure SQL Managed Instance
현재 데이터베이스에서 분할된 테이블 또는 인덱스의 파티션을 하나 이상의 파일 그룹에 매핑하는 구성표를 만듭니다. 테이블 또는 인덱스의 행을 파티션에 매핑하는 값은 파티션 함수에 지정됩니다. 파티션 구성표를 만들기 전에 CREATE PARTITION FUNCTION 문을 사용해 먼저 파티션 함수를 만들어야 합니다.
참고
Azure SQL Database에서는 기본 파일 그룹만 지원됩니다. 파일 그룹에서 파일 그룹 및 분할 전략에 대해 자세히 알아보세요.
구문
CREATE PARTITION SCHEME partition_scheme_name
AS PARTITION partition_function_name
[ ALL ] TO ( { file_group_name | [ PRIMARY ] } [ ,...n ] )
[ ; ]
인수
partition_scheme_name
파티션 구성표의 이름입니다. 파티션 구성표 이름은 데이터베이스 내에서 고유해야 하며 식별자에 대한 규칙을 따라야 합니다.
partition_function_name
파티션 구성표를 사용하는 파티션 함수의 이름입니다. 파티션 함수로 생성한 파티션은 파티션 구성표에서 지정한 파일 그룹으로 매핑됩니다. partition_function_name이 데이터베이스에 이미 있어야 합니다. 단일 파티션에는 FILESTREAM 파일 그룹과 FILESTREAM이 아닌 파일 그룹이 둘 다 포함될 수 없습니다.
ALL
모든 파티션이 file_group_name에서 제공한 파일 그룹에 매핑되거나 또는 [PRIMARY]가 지정된 경우 주 파일 그룹에 매핑되도록 지정합니다. ALL을 지정하면 하나의 file_group_name만 지정할 수 있습니다.
file_group_name | [ PRIMARY ] [ ,...n]
partition_function_name 지정한 파티션을 저장할 파일 그룹의 이름을 지정합니다. file_group_name은 데이터베이스에 이미 있어야 합니다.
[PRIMARY]를 지정하면 파티션은 주 파일 그룹에 저장됩니다. ALL을 지정하면 하나의 file_group_name만 지정할 수 있습니다. [ ,...n]에 나열된 파일 그룹의 순서대로 1번 파티션부터 시작하여 파티션을 파일 그룹에 할당합니다. [ ,...n]에서 같은 file_group_name을 두 번 이상 지정할 수 있습니다. n이 partition_function_name에서 지정된 만큼의 파티션 수를 보유하기에 부족한 경우 CREATEPARTITION SCHEME은 오류가 발생하고 실패합니다.
partition_function_name이 파일 그룹보다 적은 파티션을 생성한 경우 할당되지 않은 첫 번째 파일 그룹이 NEXT USED로 표시되고 정보 메시지가 NEXT USED 파일 그룹에 표시됩니다. ALL을 지정하면 하나의 file_group_name만이 해당 partition_function_name의 NEXT USED 속성을 유지합니다. ALTER PARTITION FUNCTION 문에서 파티션을 생성한 경우 NEXT USED 파일 그룹이 추가 파티션을 받습니다. 할당되지 않은 파일 그룹을 추가로 만들어 새 파티션을 보유하려면 ALTER PARTITION SCHEME을 사용하십시오.
file_group_name [ ,...n]에서 주 파일 그룹을 지정하면 PRIMARY는 키워드이므로 [PRIMARY]와 같이 구분해야 합니다.
SQL Database에는 PRIMARY만 사용할 수 있습니다. 아래 예제를 참조하세요.
사용 권한
CREATE PARTITION SCHEME을 실행하는 데 필요한 권한은 다음과 같습니다.
- ALTER ANY DATASPACE 권한. 이 권한은 기본적으로 sysadmin 고정 서버 역할 및 db_owner 및 db_ddladmin 고정 데이터베이스 역할의 멤버에게 부여됩니다.
- 파티션 구성표가 생성된 데이터베이스에 대한 CONTROL 또는 ALTER 권한
- 파티션 구성표가 생성된 데이터베이스의 서버에 대한 CONTROL SERVER 또는 ALTER ANY DATABASE 권한
예제
A. 각 파티션을 다른 파일 그룹에 매핑하는 파티션 구성표 만들기
다음 예에서는 테이블이나 인덱스를 4개의 파티션으로 분할하는 파티션 함수를 만듭니다. 4개의 파티션 각각을 보유하도록 파일 그룹을 지정하는 파티션 구성표를 만듭니다. 이 예에서는 데이터베이스에 이미 파일 그룹이 있다고 가정합니다.
CREATE PARTITION FUNCTION myRangePF1 (INT)
AS RANGE LEFT FOR VALUES (1, 100, 1000);
GO
CREATE PARTITION SCHEME myRangePS1
AS PARTITION myRangePF1
TO (test1fg, test2fg, test3fg, test4fg);
col1 분할 열에 myRangePF1
파티션 함수를 사용하는 테이블의 파티션은 다음 표와 같이 할당됩니다.
파일 그룹 | 파티션 | 값 |
---|---|---|
test1fg |
1 | col1<= 1 |
test2fg |
2 | col1>1 AND col1<= 100 |
test3fg |
3 | col1>100 AND col1<= 1000 |
test4fg |
4 | col1>1000 |
B. 여러 파티션을 같은 파일 그룹에 매핑하는 파티션 구성표 만들기
모든 파티션을 같은 파일 그룹에 매핑하는 경우 ALL 키워드를 사용하십시오. 그러나 모든 파티션이 아니라 여러 개의 일부 파티션을 같은 파일 그룹에 매핑하는 경우 다음 예와 같이 파일 그룹 이름을 반복해야 합니다.
CREATE PARTITION FUNCTION myRangePF2 (INT)
AS RANGE LEFT FOR VALUES (1, 100, 1000);
GO
CREATE PARTITION SCHEME myRangePS2
AS PARTITION myRangePF2
TO ( test1fg, test1fg, test1fg, test2fg );
col1 분할 열에 myRangePF2
파티션 함수를 사용하는 테이블의 파티션은 다음 표와 같이 할당됩니다.
파일 그룹 | 파티션 | 값 |
---|---|---|
test1fg |
1 | col1<= 1 |
test1fg |
2 | col1>1 AND col1<= 100 |
test1fg |
3 | col1>100 AND col1<= 1000 |
test2fg |
4 | col1>1000 |
C. 모든 파티션을 같은 파일 그룹에 매핑하는 파티션 구성표 만들기
다음 예에서는 앞의 예와 같은 파티션 함수를 만들고 모든 파티션을 같은 파일 그룹에 매핑하는 파티션 구성표를 만드는 방법을 보여 줍니다.
CREATE PARTITION FUNCTION myRangePF3 (INT)
AS RANGE LEFT FOR VALUES (1, 100, 1000);
GO
CREATE PARTITION SCHEME myRangePS3
AS PARTITION myRangePF3
ALL TO ( test1fg );
D. 'NEXT USED' 파일 그룹을 지정하는 파티션 구성표 만들기
다음 예에서는 앞의 예와 같은 파티션 함수를 만들고 연관된 파티션 함수가 생성한 파티션보다 많은 파일 그룹을 나열하는 파티션 구성표를 만드는 방법을 보여 줍니다.
CREATE PARTITION FUNCTION myRangePF4 (INT)
AS RANGE LEFT FOR VALUES (1, 100, 1000);
GO
CREATE PARTITION SCHEME myRangePS4
AS PARTITION myRangePF4
TO (test1fg, test2fg, test3fg, test4fg, test5fg)
문을 실행하면 다음 메시지가 반환됩니다.
파티션 구성표 'myRangePS4'가 작성되었습니다. 파티션 구성표 'myRangePS4'에서 'test5fg'는 다음에 사용되는 파일 그룹으로 표시됩니다.
파티션을 추가하도록 myRangePF4
파티션 함수를 변경한 경우 test5fg
파일 그룹이 새로 만들어진 파티션을 받습니다.
E. PRIMARY에만 파티션 구성표 만들기
Azure SQL Database에서는 파일 및 파일 그룹을 추가할 수 없지만, PRIMARY 파일 그룹에서만 분할하여 테이블을 분할할 수 있습니다.
다음 예에서는 테이블이나 인덱스를 4개의 파티션으로 분할하는 파티션 함수를 만듭니다. 그러면 모든 파티션이 PRIMARY 파일 그룹에 만들어지도록 지정하는 파티션 구성표가 만들어집니다.
CREATE PARTITION FUNCTION myRangePF1 (INT)
AS RANGE LEFT FOR VALUES (1, 100, 1000);
GO
CREATE PARTITION SCHEME myRangePS1
AS PARTITION myRangePF1
ALL TO ( [PRIMARY] );
다음 단계
다음 문서에서 테이블 분할 및 관련 개념에 대해 자세히 알아보세요.