[DB] - 파티션(Partition)

BackEnd_Ash.log·2020년 8월 20일
0

database

목록 보기
8/31

https://gmlwjd9405.github.io/2018/09/24/db-partitioning.html

DB partion

서비스의 크기가 점점 커지고 DB 에 저장하는 데이터의 규모또한 대용량화 되면서 기존에 사용하는 DB 시스템의 용량의 한계와 성능의 저하를 가져오게 되었다.

VLDB 와 같이 하나의 DBMS 에 너무 큰 table 이 들어가면서 용량왁 선능 측면에서 많은 이슈가 발생하게 되었고 ,
이런 이슈를 해결하기 위한 방법으로
table 을 partion 이라는 작은 단위로 나누어서 관리 하는 기법 이 나타나게 되었다.

partition 은 언제사용하는것이 좋을까 ??

테이블의 데이터가 많아진다고 해서 무조건 partition 을 사용하는것은 안좋다.
하나의 테이블이 너무 커서 인덱스의 크기가 물리적인 메모리보다 훨씬 크거나 , 데이터 특성상 주기적인 삭제 작업이 필요한 경우 partition 이 필요하다

partition 종류

수직 파티션

  • 특정 컬럼을 기준으로 나눈다.
  • 자주 사용하는 컬럼 등을 분리시켜 성능을 향상 시킨다.

수평 파티션

  • row 단위로 자른다.
  • 하나의 테이블을 같은 스키마를 가지는 여러개의 작은 테이블로 나눈다.
  • 스키마를 복제한 후 샤드키를 기준으로 데이터를 나눈다.

partition 분할 기준

range 파티션

  • Partition Key 의 연속된 범위로 파티션을 정의
  • 파티션 키 위주로 검색이 자주 실행될 경우 유용하다.
  • ex ) 월별 , 분기별 , pk 별 데이터에 적합하다.

List 파티션

  • 특정 Partition 에 저장 될 Data 에 대한 명시적 제어 가능하다.
  • 분포도가 비슷하다
  • 많은 SQL 에서 해당 Column 의 조건이 많이 들어오는 경우 유용하다
  • ex) [한국, 일본, 중국 -> 아시아][노르웨이, 스웨덴, 핀란드 -> 북유럽]

Hash partition

Hash 는 많이 사용해봤고 , 많이 들어봤을 것이다.

마찬가지로 key value 로 이루어져있다.

  • 특정 Data 가 어느 Hash Partition 에 있는지 판단불가
  • Hash Partition 은 파티션을 위한 범위가 없는 데이터에 적합

profile
꾸준함이란 ... ?

0개의 댓글