파티션 테이블을 PARTITION SWITCH를 통해 DELETE 하려고 하는데
PARTITION RANGE가 헷갈려서 데이터가 잘못 지워질 수도 있다고 생각하여 실험을 진행했다.
테이블을 생성했다.
CREATE TABLE TEST (
DT DATE NOT NULL,
ITEM_ID VARCHAR(20) COLLATE Korean_Wansung_CS_AS NOT NULL
)
WITH (CLUSTERED COLUMNSTORE INDEX, DISTRIBUTION = HASH([ITEM_ID]),
PARTITION ([DT] RANGE RIGHT FOR VALUES ('Jan 1 2016', 'Jan 1 2017', 'Jan 1 2018')));
이렇게 만들어진 TEST 테이블은 파티션을 조회하면 다음과 같이 나온다.
파티션 번호 / 파티션 값
1 / 2016-01-01
2 / 2017-01-01
3 / 2018-01-01
그리고 TEST 테이블에 DATA를 INSERT하는데 DT를 2015년, 2016년, 2017년, 2018년
결론은
1번 파티션에는 2016-01-01 미만인 2015년 데이터가 들어가고
2번 파티션에는 2016-01-01 이상 2017-01-01 미만 2016년 데이터가 들어가고
3번 파티션에는 2017-01-01 이상 2018-01-01 미만 2017년 데이터가 들어가고
4번 파티션에는 2018-01-01 이상인 2018년 데이터가 들어간다.
대량의 데이터를 DELETE하려면 로그쓰는데 시간이나 물리적 자원이 많이 드는데
이럴 경우 파티션 SWAP을 통해 TRUNCATE 하면 훨씬 적은 자원으로 데이터를 지울 수 있다.
하지만 파티션 SWAP을 할 땐 데이터의 RANGE를 잘 생각해야 할 것 같다.
'Programming > MSSQL' 카테고리의 다른 글
MSSQL DB 설정 보기 (DBA 관리용 시스템 프로시저) (0) | 2018.04.09 |
---|---|
MSSQL 서버 정보 보기 (DBA 관리용 시스템 프로시저) (0) | 2018.04.09 |
MSSQL 블러킹 및 리스트, BUFFER 데이터 보기 (DBA 관리용 시스템 프로시저) (0) | 2018.04.09 |
MSSQL 테이블 정의보기 (DBA 관리용 시스템 프로시저) (0) | 2018.04.09 |
MSSQL 테이블, 뷰 보기 (DBA 관리용 시스템 프로시저) (1) | 2018.04.09 |