공부, 기록

[MSSQL/SQL SERVER] 파티션 본문

공부/DATABASE

[MSSQL/SQL SERVER] 파티션

무는빼주세요 2021. 4. 11. 14:50

파티션 : 큰 데이터를 나누어서 관리하는 방법 SQL SERVER 에서는 테이블과 인덱스 파티셔닝을 지원함.

 

이점 : 

  • 성능적인 부분에서 효율성이 나올 수 있다
    EX) 쇼핑몰에서 처럼 대용량으로 주문 데이터가 쌓였을 때 최근 데이터를 조회하는 경우 파티셔닝이 이루어져 있다면 효율면에서 차이가 크다
  • 파티션 수준에서 잠금에스컬레이션을 설정하여 테이블 잠금 경합을 줄일 수 있다.
  • 관리면에서 가볍다

 

DB 샤딩 : DB 샤딩은 파티션 분할의 방법 중 하나이다. 분산 처리를 위한 기술로 수평분할의 일종이라고 할 수있다.

모듈러 샤딩과 레인지 샤딩 등이 있다.

샤딩은 특히 샤딩키를 어떻게 설정하는냐에 따라 효율이 크게 나뉜다.

 

모듈러 샤딩은 PK를 모듈러 연산한 결과로 DB를 특정하는 방식으로 데이터가 균일하게 분산되는 장점이 있지만 DB를 추가 증설하는 과정에서 데이터의 재정렬이 필요한 단점이 있다.

 

레인지샤딩은 PK를 범위로 나누어서 DB를 특정하는 방식이다. 장점으로는 재정렬 비용이 들지 않지만 단점으로 일부 DB에 데이터가 몰릴 수 있는 경우가 있다.

 

SQL SERVER 파티션 지정법

1. 파일그룹 생성

2. 파티션 함수, 스키마, 테이블 생성 

CREATE PARTITION FUNCTION FUNC1 (datetime) //[함수명]/데이터 형식
AS RANGE LEFT// OR RIGHT
FOR VALUES ('2020', '2021');
GO
CREATE PARTITION SCHEME sch1//[스키마명]
AS PARTITION FUNC1 TO (생성한 파일 그룹들);
GO
CREATE TABLE tab1 (col1 int, col2 datetime) //파티션 테이블 명
ON sch1 (col2);  //파티션 경계값 컬럼

IF RANGE = LEFT -> 파티션 1 : COL2 <='2020' 파티션 2 : COL2 >'2020' AND COL2 <= '2021' 파티션 3 : COL2 > '2021'

IF RANGE = RIGHT -> 파티션 1 : COL2 <'2020' 파티션 2 : COL2 >='2020' AND COL2 < '2021' 파티션 3 : COL2 >= '2021'

 

3. ALTER PARTITION FUNTION 으로 파티션 함수 수정 가능

4. ALTER PARTITION SCHEME 로 파티션 스키마 수정 가능

 

 

'공부 > DATABASE' 카테고리의 다른 글

[MSSQL/SQL SERVER] 복제 (Replication)  (0) 2021.04.25
[MSSQL/SQL SERVER] 병렬처리  (0) 2021.04.18
[MSSQL/SQL SERVER] 격리수준, 락(lock)  (0) 2021.04.04
[MSSQL/SQL SERVER] 실행계획  (0) 2021.03.23
[MSSQL/SQL SERVER] 서브쿼리  (0) 2021.03.06