skarltjr / Memory_Write_Record

나의 모든 학습 기록
0 stars 0 forks source link

MYSQL 파티셔닝 #82

Open skarltjr opened 2 years ago

skarltjr commented 2 years ago

https://github.com/skarltjr/CS/blob/main/DATABASE/파티셔닝%2C샤딩.md

파티셔닝,샤딩에 대한 개념을 학습한 후 연습을 해보고자한다.
그 중에서도 mysql에서 range를 통한 파티셔닝을 해보고자한다.
CREATE TABLE userTable1 (
    `userID` INT NOT NULL,
    `birthYear` INT NOT NULL 
);

CREATE TABLE userTable (
    `userID` INT NOT NULL,
    `birthYear` INT NOT NULL )
PARTITION BY RANGE(birthYear) (
PARTITION part1 VALUES LESS THAN (1970),
PARTITION part2 VALUES LESS THAN (1980),
PARTITION part3 VALUES LESS THAN (1990),
PARTITION part4 VALUES LESS THAN MAXVALUE
);

- 유저아이디와 birthYear를 갖는 테이블을 생성한다
- 이 때 해당 테이블은 유저의 birthYear에 따라 ~70 / 70~80 / 80~90/ 90 ~ 로 총 4개의 파티션으로 나눈다
데이터가 매우 많을 땐 파티션을 나눔으로써 테이블을 작게 여러개로 나누어 관리
+ 조회시 특정 파티션으로 바로 진입하여 빠른 조회가 일어날 수 있다고 생각

반면에 데이터가 많지 않은 상황에서 굳이 파티션을 나눈다면 오히려 full scan이 더 빠른 역효과도 생길 수 있다.

참고 : https://velog.io/@gillog/MySQL-Partition