[sql] SQL 테이블 생성 시 테이블 분할(파티셔닝) 설정하기

SQL 데이터베이스에서 테이블을 생성할 때, 테이블 파티셔닝을 설정할 수 있습니다. 테이블 파티셔닝은 대용량 데이터를 효율적으로 관리하기 위한 방법으로, 테이블을 여러 개의 물리적인 파티션으로 나누어 관리하는 것을 의미합니다.

테이블 파티셔닝의 장점

테이블을 파티션으로 나누면 다음과 같은 장점이 있습니다.

  1. 성능 향상: 파티션 단위로 데이터를 분산시키므로, 쿼리의 속도를 향상시킬 수 있습니다.
  2. 관리 용이성: 데이터를 파티션 단위로 관리하기 때문에, 데이터 유지 및 관리가 용이합니다.
  3. 고가용성 및 복구: 일부 파티션에 문제가 발생해도, 다른 파티션에서 데이터를 복구할 수 있습니다.
  4. 입출력 감소: 파티션별로 접근할 데이터가 줄어들기 때문에, 디스크 입출력이 감소합니다.

테이블 파티셔닝 설정 방법

테이블을 파티션으로 나누기 위해서는, 테이블 생성 시 파티셔닝 설정을 추가해야 합니다. 다음은 MySQL에서의 예시 코드입니다.

CREATE TABLE 테이블명 (
  컬럼1 데이터타입,
  컬럼2 데이터타입,
  ...
)
PARTITION BY RANGE(컬럼) (
  PARTITION 파티션1 VALUES LESS THAN (),
  PARTITION 파티션2 VALUES LESS THAN (),
  ...
)

위의 코드에서 LESS THAN 절을 통해 각 파티션의 범위를 설정하고, VALUES LESS THAN 다음에는 해당 범위의 최대값을 지정합니다.

예를 들어, 날짜별로 테이블을 파티션으로 나누는 경우 다음과 같이 설정할 수 있습니다.

CREATE TABLE log_partition (
  id INT,
  log_date DATE
)
PARTITION BY RANGE(log_date) (
  PARTITION p202101 VALUES LESS THAN ('2021-02-01'),
  PARTITION p202102 VALUES LESS THAN ('2021-03-01'),
  PARTITION p202103 VALUES LESS THAN ('2021-04-01'),
  ...
)

위의 예시에서는 log_date 컬럼을 기준으로 테이블을 파티션으로 나누었습니다. ‘2021-02-01’ 이전의 데이터는 p202101 파티션에 저장되고, ‘2021-03-01’ 이전의 데이터는 p202102 파티션에 저장됩니다.

참고 자료