DB Partitioning

귀찮Lee·2023년 2월 20일
0

DataBase / MySQL

목록 보기
9/16
post-thumbnail
post-custom-banner

◎ Partitioning

  • Partitioning

    • 한 DB 내에서 큰 테이블이나 인덱스를 관리하기 쉬운 크기로 분리하는 방법
  • 특징

    • 가용성(Availability) : 물리적인 노드 분리에 따라 전체 DB 내의 데이터 손상 가능성이 줄어들고, 데이터 가용성이 향상
    • 관리 용이성(Manageability) : 큰 테이블을 제거하여 관리를 쉽게 할 수 있다.
    • 성능(Performance) : 특정 Query 성능을 향상시키며 대용량 데이터 write 환경에서 효율적
  • 장점

    • 관리적 측면 : partition 단위 백업, 추가, 삭제, 변경 가능
    • 성능적 측면 : partition 단위 조회 및 DML 수행
      • 필요한 부분만 이용하여 조회함
  • 단점

    • 테이블 간 join 비용 증가
    • 파티션 제약: 테이블과 인덱스를 별도로 파티션 할 수 없다.

◎ DB Partition의 종류

  • Horizonal Partitioning (수평 파티셔닝)

    • 개념
      • 스키마(schema)가 같은 데이터를 두 개 이상의 테이블에 나누어 저장하는 것
      • 파티셔닝을 이야기 할 때, 일반적으로 수평 분할을 의미함
      • 퍼포먼스, 가용성을 위해 KEY 기반으로 여로 곳에 분산 저장함
    • 장점
      • 분할 조건에 따라 검색 속도를 높일 수 있다.
        • 예를 들어, 월별로 Partitioning을 진행했다면 특정 월에 있는 데이터를 조회하기 수월함
  • Vertical Partitioning (수직 파티셔닝)

    • 개념
      • 모든 컬럼 중 특정 컬럼을 쪼개어 따로 저장하는 형태
      • 하나의 엔티티를 2개 이상으로 분리하는 작업
    • 장점
      • 자주 사용하는 컬럼을 분리시켜 성능을 향상시킬 수 있다.
      • 필요한 컬럼만 올리면 훨씬 많은 수의 ROW을 메모리에 올릴 수 있어 성능상 이점이 있다.
      • 같은 타임의 데이터가 저장되기 때문에 저장 시에 데이터 압축률을 높일 수 있다.

◎ DB Partitioning의 분할 기준

  • DB Partitioning의 분할 기준

    • DB 관리 시스템은 분할에 대해 각종 기준(분할 기법)을 제공하고 있다.
    • 분할은 partitioning key를 사용한다.
  • Range Partitioning

    • 범위로 나눔, 날짜가 대표적
    • 분할 키 값이 범위 내에 있는지 여부로 구분한다.
    • ex) 로그를 "년" 단위로 저장해 특정 기간이 지날 때 파티션 단위로 삭제함
  • list Partitioning

    • 값 목록에 파티션을 할당 분할 키 값을 그 목록에 비추어 파티셔닝 함
    • ex) 메뉴의 종류 : 특정 메뉴에 관련된 정보를 불러올 때 빠르게 불러올 수 있다.
  • hash Partitioning

    • 해시 함수의 값에 따라 파티션에 포함할지 여부를 결정
    • 균등하게 데이터를 나누어 저장함
    • 예를 들어 4개의 파티션으로 분할하는 경우 해시 함수는 0-3의 정수를 돌려줌

◎ Partitioning vs Sharding

  • 공통점
    • Horizonal Partitioning, Sharding 모두 데이터를 수평 단위로 분할하여 저장함
  • 차이점
    • Partitioning은 하나의 DB 내에서 분리하여 저장함
    • Sharding은 물리적으로 다른 DB에 저장함

◎ 참고 자료

profile
배운 것은 기록하자! / 오류 지적은 언제나 환영!
post-custom-banner

0개의 댓글