[CS 면접 질문 - DB] 파티셔닝

2025. 1. 6. 15:09·면접 준비/DB
728x90
반응형
SMALL

Partitioning

테이블은 수직적 또는 수평적으로 분할될 수 있다.
수평적 분할은 테이블의 행을 기준으로 테이블을 나누고, 수직적 분할은 테이블의 열을 기준으로 테이블을 나누어 저장한다.

정규화된 테이블일지라도 물리적으로 테이블의 열을 분리하여 저장하는 것이 효율적일 때가 있다.
테이블에 발생하는 트랜잭션 수에 비해 테이블 내에 열이 과도하게 많거나, 특정 열에 속하는 레코드의 데이터 크기가 다른 열의 레코드에 비해 과도하게 큰 경우, 또는 보안 상의 이유로 특정 열을 별개의 테이블로 나누어 저장해야 하는 경우 수직적 분할이 필요하다.

예를 들어 게시글id, title, writer, content가 있는데 content에 과도하게 많은 양의 데이터가 있어 크기가 큰 경우에는 별도의 테이블로 분리한 뒤 필요할 때만 조회하는 것이 더 유리하다는 것이다.

수평적 분할을 하게 되는 경우는 수많은 레코드가 있고, 테이블의 레코드를 참조할때마다 모든 레코드를 한 번에 불러들여야하는 경우에는 수평적으로 분리한다.
대부분의 수평적 분할은 데이터베이스/테이블 분활, 데이터베이스/테이블 파티셔닝이라는 용어로 불리기도 한다.

수평적 분할 방법

  1. 범위 분할
  • 레코드가 가질 수 있는 범위를 정의하고, 해당 범위를 기준으로 테이블을 나눈다.
  • 예를 들어 19990년, 2000년, 2010년으로 범위를 정의하고 범위에 따라 테이블을 나누는 방법도 있다.
CREATE TABLE users(
    username varchar(50) not null ,
    registration_date DATE not null 
)

PARTITION BY RANGE (YEAR(registration_date)) (
    PARTITION p0 VALUES LESS THAN (1990),
    PARTITION p1 VALUES LESS THAN (2000),
    PARTITION p2 VALUES LESS THAN (2010),
    PARTITION p3 VALUES LESS THAN (2020),
    PARTITION p4 VALUES LESS THAN MAXVALUE 
    )
  1. 목록 분할
  • 레코드 데이터가 특정 목록에 포함된 값을 가질 경우 별도의 테이블로 분할한다.
  • 예를 들어 테이블의 주소를 기준으로 특정 목록이 포함된 경우로 분할 할 수 있다.
CREATE TABLE customer(
    name varchar(50),
    address varchar(100)
)
PARTITION BY LIST COLUMNS (address)(
    PARTITION p0 VALUES IN('Seoul', 'Busan', 'Daegu'),
    PARTITION p1 VALUES IN('Incheon','Gwangju','Daejeon')
    )
  1. 해시 분할
  • 특정 열 데이터에 대한 해시 값을 기준으로 별도의 테이블로 분할한다.
  • 파티션별 레코드가 해시 값을 기준으로 균등하게 분배된다.
  • 예를 들어 학생들의 전공 과목 데이터에서 어떠한 열ㅡㄹ 기준으로 분할하고, 레코드는 분할한 열에 해시 함수를 적용하여 생성된 해시 값에 따라 4개의 파티션으로 나뉘어 저장한다.
    CREATE TABLE students(
      id INT NOT NULL ,
      name varchar(30),
      major_id INT
    )
    PARTITION BY HASH ( major_id ) PARTITIONS 4;
  1. 키 분할
  • 키를 기준으로 별도의 테이블로 분할한다. 파티션별 레코드가 키를 기준으로 균등하게 분배된다.
# 키 id를 기준으로 파티셔닝, id값에 따라 2개의 파티션으로 나뉜다.
CREATE TABLE students(
    id INT NOT NULL PRIMARY KEY ,
    name varchar(50)
)
PARTITION BY KEY ()
PARTITIONS 2;
728x90
반응형
SMALL

'면접 준비 > DB' 카테고리의 다른 글

[DB / Transaction] 트랜잭션 고립 수준  (0) 2025.03.02
[DB / JPA] 낙관적 락과 비관적 락  (0) 2025.03.02
[CS 개념 정리 - DB] 정규화  (1) 2025.01.06
[CS 개념 정리 - DB] 인덱스  (0) 2025.01.06
[CS 개념 정리 - DB] 서브쿼리와 조인 간략정리  (0) 2025.01.06
'면접 준비/DB' 카테고리의 다른 글
  • [DB / Transaction] 트랜잭션 고립 수준
  • [DB / JPA] 낙관적 락과 비관적 락
  • [CS 개념 정리 - DB] 정규화
  • [CS 개념 정리 - DB] 인덱스
공부하고 기억하는 공간
공부하고 기억하는 공간
IT 비전공자로 시작하여 훌륭한 개발자가 되기 위해 공부하고 있는 공간입니다. 틀린 내용이나 부족한 부분이 있으면 댓글로 알려주세요 바로 수정하겠습니다.
  • 공부하고 기억하는 공간
    IT - railroad
    공부하고 기억하는 공간
  • 전체
    오늘
    어제
    • 분류 전체보기 (329)
      • 면접 준비 (45)
        • OS (6)
        • Spring Security (0)
        • Java (3)
        • DB (11)
        • Network (3)
      • ElasticSearch (5)
      • Kafka (5)
      • Spring (60)
        • Spring Cloud (7)
        • Security6 (5)
        • JPA (12)
        • 프로젝트 리팩토링 회고록 (4)
        • Logging (8)
        • Batch (2)
      • Redis (17)
        • Redis 개념 (8)
        • Redis 채팅 (5)
        • Redis 읽기쓰기 전략 (1)
      • AWS (11)
      • 리눅스 (29)
        • 리눅스 마스터 2급 (5)
        • 네트워크(기초) (7)
        • 리눅스의 이해 (6)
        • 리눅스의 설치 (2)
        • 리눅스 운영 및 관리 (6)
      • JAVA-기초 (16)
        • JAVA기본 (11)
        • Design Pattern (5)
      • JSP (27)
        • JSP 기본 개념 (10)
        • JSP (1)
      • SQL (1)
      • TIL (36)
      • 문제 풀이 (39)
        • Programmers (9)
        • 백준 문제풀이 (28)
      • JavaScript (10)
      • HTML (17)
      • Ngrinder (1)
        • Ngrinder 문서 정리 (1)
  • 블로그 메뉴

    • 링크

    • 공지사항

    • 인기 글

    • 태그

      리눅스마스터2급정리
      스프링프레임워크
      자바 면접
      JS
      java
      HTML
      자바 알고리즘
      redis 채팅
      redis
      자바 반복문
      JavaScript
      자바 면접질문
      리눅스마스터2급
      jsp기초
      Spring
      레디스
      리눅스
      백준
      프로그래머스
      JSP
      springsecurity
      자바스크립트
      Springframework
      jsp request
      Spring Data Redis
      Til
      자바기초
      자바
      CSS
      spring redis
    • 최근 댓글

    • 최근 글

    • 250x250
    • hELLO· Designed By정상우.v4.10.3
    공부하고 기억하는 공간
    [CS 면접 질문 - DB] 파티셔닝
    상단으로

    티스토리툴바