본문 바로가기

IT/Database

[MS SQL] DB 파티션


Using Views to Partition Data 


파일그룹으로 대용량의 데이터를 저장할 수는 있으나 각 파일에는 작년꺼, 올해꺼 식으로 나눠서 저장할 수는 없다.


select 시 많은 파일그룹의 데이터를 읽어오려면 속도가 오래걸린다. 

예를 들어, 

Server 1 : C(200201-200204 data) D(200205-200209 data) E(200209-200212 data) 

Server 2 : C(200101-200104 data) D(200105-200109 data) E(200109-200112 data) 


Server 1,Server 2의 각 C,D,E에 구조가 같은 테이블을 각각 생성하고 그 테이블의 WITH CHECK OPTION을 넣어 

해당 기간의 데이터만 저장되게 하고 각 데이터를 UNION으로 View테이블을 생성하면 성능이 훨씬 좋아진다. 


2002년 4월같은 새로운 달이 생성되면 예약작업으로 새로운 테이블을 생성하도록 한다. 


(팁) 


Union과 Union all의 차이점. 


테이블 A와 B에 데이터가 100건씩있을때 union all의 결과는 200건 union은 200건보다 작거나 같다.


union시는 중복되는 행이 있는지 체크하기 때문 


(DB 파티션의 간단한 예) 


create table t1 (col1 int primary key check (col1 between 1 and 10), col2 int ) 

create table t2 (col1 int primary key check (col1 between 11 and 20), col2 int ) 

go create view v1 as select * from t1 union all select * from t2 go select * from v1; 

insert into v1 values (1,10) insert into v1 values (2,10) select * from t1; 

select * from t2; select * from v1 where col1 < 10