'ALTER PARTITION FUNCTION SPLIT'에 해당되는 글 1건

  1. 2013.06.19 분할된 테이블 관리(SPLIT, SWITCH, MERGE)
MS SQL2013.06.19 16:01

 

[내용]

 

분할된 테이블을 관리하는 방법에는 3가지가 있습니다.

첫째, 분할(SPLIT) 입니다. 분할은 기존에 있던 파티션을 나누는 것입니다.

둘째, 전환(SWITCH) 입니다. 전환은 2개의 분할된 테이블이 있을 , 1 테이블의 파티션을 2 테이블의 파티션으로 옮기는 방법 입니다.

마지막, 병합(MERGE) 입니다. 병합은 파티션을 하나로 합치는 방법입니다.

시나리오를 가지고, 분할된 테이블 관리하는 것에 대해 알아보겠습니다.

 

 

[환경]

 

OS: Windows Server 2012

PRODUCT: SQL Server 2012 Ent

 

 

[시나리오]

 

아래와 같이 구성된 테이블을 통하여 분할된 테이블 관리에 대해 알아 봅시다.
(기존 분할된 테이블 구성 참고: http://tshooter.tistory.com/entry/분할된-테이블Ver-Script)

 

기존 분할된 테이블(dbo.Orders)

파티션1

파티션2

파티션3

~ 2011-01-01

2011-01-01~

 

 

새로운 분할된 테이블(dbo.AddOrders)

파티션1

파티션2

~ 2011-01-01

2011-01-01~

 

 

[ACTION]

 

새로운 분할된 테이블을 아래 스크립트를 통하여 생성합니다.

---------------------------------------------------------------------------

-- 파티션 함수 만들기

CREATE PARTITION FUNCTION pf_AddOrderDate (date)

        AS RANGE RIGHT

        FOR VALUES ('2011-01-01' )

GO

 

-- 파티션 구성표 만들기

CREATE PARTITION SCHEME ps_AddOrderDate

   AS PARTITION pf_AddOrderDate

   ALL TO (FG01)

GO

 

-- 분할된 테이블 만들기

CREATE TABLE dbo.AddOrders (

OrderID int NOT NULL,

CustomerID varchar(20),

ProductID char(05),

OrderDate date,

OrderQty int,

UnitPrice int

) ON ps_AddOrderDate(OrderDate)

GO

---------------------------------------------------------------------------

 

 

기존 분할된 테이블을 "~ 2011-01-01", "2011-01-01~2012-01-01", "2012-01-01" 분할(SPLIT)합니다.

아래의 스크립트를 실행합니다.

---------------------------------------------------------------------------

-- 파티션 분할(SPLIT)

ALTER PARTITION FUNCTION pf_OrderDate()

SPLIT RANGE ('2012-01-01')

GO

 

/*스크립트 결과*/

기존 분할된 테이블(dbo.Orders)

파티션1

파티션2

파티션3

~ 2011-01-01

2011-01-01~2012-01-01

2012-01-01~

 

새로운 분할된 테이블(dbo.AddOrders)

파티션1

파티션2

~ 2011-01-01

2011-01-01~

---------------------------------------------------------------------------

 

 

기존 분할된 테이블(dbo.Orders) 파티션1 새로운 분할된 테이블(dbo.AddOrdersDate)으로 전환(SWITCH)합니다.

아래의 스크립트를 실행합니다.

---------------------------------------------------------------------------

-- 파티션 전환(SWITCH)

ALTER TABLE dbo.Orders

SWITCH PARTITION 1

TO dbo.AddOrders PARTITION 1

GO

 

/*스크립트 결과*/

기존 분할된 테이블(dbo.Orders)

파티션1

파티션2

파티션3

 

2011-01-01~2012-01-01

2012-01-01~

 

새로운 분할된 테이블(dbo.AddOrders)

파티션1

파티션2

~ 2011-01-01(+ 2011-01-01 of Orders)

2011-01-01~

---------------------------------------------------------------------------

 

 

기존 분할된 테이블(dbo.Orders) 파티션1 비어 있으므로 파티션2 병합(MERGE) 필요가 있습니다.

아래의 스크립트를 통해 병합을 합니다.

---------------------------------------------------------------------------

-- 파티션 병합(MERGE)

ALTER PARTITION FUNCTION pf_OrderDate()

MERGE RANGE ('2011-01-01')

GO

 

/*스크립트 결과*/

기존 분할된 테이블(dbo.Orders)

파티션1+2

파티션3

2011-01-01~2012-01-01

2012-01-01~

 

새로운 분할된 테이블(dbo.AddOrders)

파티션1

파티션2

~ 2011-01-01(+ 2011-01-01 of Orders)

2011-01-01~

 

---------------------------------------------------------------------------

 

[참고]

 

http://msdn.microsoft.com/ko-kr/library/ms186307.aspx

http://msdn.microsoft.com/ko-kr/library/ms190273.aspx

 

 

 

신고
Posted by TM ~ing