MySQL 파티셔닝(Partitioning)

2023. 6. 28. 11:41·Database & Data/MySQL
728x90
SMALL

데이터베이스 파티셔닝은 큰 옷장을 정리하는 것에 비유할 수 있다. 옷장이 깔끔하게 정리되어 있다면, 특정 옷을 찾을 때 전체 옷장을 뒤져보지 않아도 된다. 이와 마찬가지로, 데이터베이스가 파티션으로 구분되어 있다면, 특정 데이터를 찾을 때 모든 데이터를 검색하지 않아도 된다.


다음으로, 코드 예시를 살펴봅시다. MySQL에서 'sales' 테이블을 연도별로 파티션 하려면 다음과 같이 쿼리를 작성할 수 있다:

CREATE TABLE sales (
    order_id INT NOT NULL,
    year     INT NOT NULL,
    amount   DECIMAL(10, 2) NOT NULL
)
PARTITION BY RANGE (year) (
    PARTITION p0 VALUES LESS THAN (1991),
    PARTITION p1 VALUES LESS THAN (1992),
    PARTITION p2 VALUES LESS THAN (1993),
    PARTITION p3 VALUES LESS THAN (1994)
);

DECIMAL은 MySQL에서 사용하는 데이터 유형 중 하나로, 정확한 숫자값을 저장하는 데 사용된다. 이 유형은 금융 계산이나 과학 계산에 적합하며, 소수점 이하의 정확한 위치를 유지한다. DECIMAL(10, 2)는 총 10자리의 숫자를 표현하며, 그중 2자리는 소수점 이하의 숫자이다.

이 SQL 명령은 'sales' 테이블을 만들고, 이 테이블을 연도별로 파티션한다. 'year' 값에 따라 데이터가 다른 파티션으로 분배된다. 예를 들어, 'year' 값이 1990인 모든 행은 'p0' 파티션에 저장되고, 'year' 값이 1991인 모든 행은 'p1' 파티션에 저장된다.

이렇게 하면, 1991년에 대한 주문 정보를 조회하려면 'p1' 파티션만 검색하면 된다. 이는 전체 테이블을 검색하는 것보다 훨씬 빠르게 결과를 반환한다.


데이터베이스 파티셔닝은 대용량 데이터를 관리하는 데 효율적인 방법이다. 큰 테이블을 작은 파티션으로 분할함으로써, 데이터 검색과 관리가 훨씬 빠르고 쉽게 이루어진다. 또한, 각 파티션은 별도로 백업하거나 복원할 수 있으므로 데이터의 가용성도 향상된다. 하지만 파티셔닝이 항상 최선의 선택은 아니다. 사용자의 요구에 따라, 파티셔닝, 인덱싱, 또는 다른 최적화 전략 중에서 가장 적합한 방법을 선택해야 한다.


예를 들어, 위에서 생성한 'sales' 테이블에서 1991년의 주문 정보를 조회하려면 다음과 같이 쿼리를 작성할 수 있다.

SELECT * FROM sales WHERE year = 1991;

이 쿼리를 실행하면, DBMS는 'year' 열이 1991인 행이 있는 파티션만 검색한다. 즉, 'p1' 파티션만 검색하게 된다. 이는 전체 테이블을 스캔하는 것보다 훨씬 효율적이다.

다만, 파티션 키가 WHERE 절에 없는 쿼리를 실행하면, DBMS는 모든 파티션을 검색해야 하므로 덜 효율적일 수 있다.

그리고 파티셔닝의 성능 향상을 확실히 누리려면, 일반적으로는 파티션 키가 포함된 인덱스를 생성해야 한다. 이렇게 하면 DBMS가 쿼리를 처리하는 데 필요한 파티션을 더 빠르게 찾을 수 있다.

728x90
SMALL
저작자표시 비영리 변경금지 (새창열림)

'Database & Data > MySQL' 카테고리의 다른 글

MySQL EVENT 간단 이해하기  (0) 2023.07.03
MySQL ON DUPLICATE KEY UPDATE 란?  (0) 2023.06.30
MySQL 스크립트 실행하는 4가지 방법 소개  (0) 2023.06.25
MySQL Root 계정 비밀번호 설정과 확인 방법(mysql_config_editor)  (0) 2023.06.25
AWS EC2에 MySQL 8 Community Edition 설치하기  (0) 2023.06.20
'Database & Data/MySQL' 카테고리의 다른 글
  • MySQL EVENT 간단 이해하기
  • MySQL ON DUPLICATE KEY UPDATE 란?
  • MySQL 스크립트 실행하는 4가지 방법 소개
  • MySQL Root 계정 비밀번호 설정과 확인 방법(mysql_config_editor)
동석해요
동석해요
공부하고 싶은게 많은, 사소한 IT 지식들 공유
개발로 자기계발공부하고 싶은게 많은, 사소한 IT 지식들 공유
    250x250
  • 동석해요
    개발로 자기계발
    동석해요
  • 전체
    오늘
    어제
    • 분류 전체보기 (226)
      • Develop (126)
        • 기초지식 (12)
        • FastAPI (102)
        • Django (11)
      • Database & Data (62)
        • 기초지식 (16)
        • MySQL (29)
        • PostgreSQL (8)
        • 데이터 분석 (9)
      • 인공지능 (11)
        • PyTorch (9)
      • Cloud (8)
        • AWS (4)
        • GCP (2)
      • 버그처리 (14)
      • 회고 & 일상 (5)
  • 인기 글

  • 최근 글

  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.3
동석해요
MySQL 파티셔닝(Partitioning)

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.