• MySQL매뉴얼
    • MySQL 5.6 매뉴얼
    • MySQL 5.1 매뉴얼
    • MySQL 5.0 매뉴얼
    • MySQL HA 매뉴얼
  • 기술문서
    • Xtrabackup 구성
    • 메모리 사용량 모니터링
  • 라이선스
  • 온라인문의
  • 회사소개
  • → 목 록 (MySQL5.6 한글메뉴얼) [close]
  • 1. MySQL 5.6 새로운 기능
  • 2. MySQL 설치 및 업그레이드
  • 3. MySQL Tutorial
  • 4. MySQL 프로그램
  • 5. MySQL 서버관리
  • 6. 보안
  • 7. 백업 및 복구
  • 8. 최적화
  • 9. Language Structure(언어구조)
  • 10. Character Sets(Globalization)
  • 11. 데이터형(Data Types)
  • 12. 함수와 연산자
  • 13. SQL 문법
  • 14. InnoDB 스토리지 엔진
  • 15. 기타 스토리지 엔진
  • 16. 고가용성 및 확장성
  • 17. 리플리케이션
  • 18. MySQL Cluster
  • 19. 파티셔닝
  • 1. MySQL Partitioning 개요
    2. Partitioning Types
    1. RANGE 파티셔닝
    2. LIST 파티셔닝
    3. COLUMNS 파티셔닝
    1. RANGE COLUMNS 파티셔닝
    2. LIST COLUMNS 파티셔닝
    4. HASH 파티셔닝
    5. KEY 파티셔닝
    6. 서브 파티셔닝
    7. MySQL Partitioning NULL 처리
    3. 파티션 관리
    4. Partition Pruning
    5. 파티션 선택
    6. 파티셔닝 제약 및 제한
  • 20. Stored Programs and Views
  • 21. INFORMATION_SCHEMA
  • 22. PERFORMANCE SCHEMA
  • 23. 컨넥터 및 API
  • 24. MySQL 확장
  • 25. MySQL Enterprise Edition
  • 26. MySQL Workbench
  • 27. 제약 및 제한
  • 28. MySQL 5.7 새로운 기능

19.2.3.2 LIST COLUMNS 파티셔닝

MySQL 5.6는 LIST COLUMNS 파티셔닝 지원을 제공합니다. 이것은 LIST 파티셔닝의 변형에 여러 컬럼을 파티션 키로 사용할 수 정수 이외의 데이터 형의 컬럼을 파티셔닝 컬럼으로 사용할 수 있습니다. 문자열, DATE 및 DATETIME 컬럼을 사용할 수 있습니다 ( COLUMNS 파티셔닝 컬럼에 허용되는 데이터 형식에 대한 자세한 내용은 섹션 19.2.3 "COLUMNS 파티셔닝" 를 참조하십시오).

회사의 고객이 12 도시에 존재하고 판매 및 마케팅을 위해 그들을 다음 표와 같이 3 개의 도시로 구성된 4 개의 지역으로 분류한다고 가정합니다.


RegionCities
1Oskarshamn, Högsby, Mönsterås
2Vimmerby, Hultsfred, Västervik
3Nässjö, Eksjö, Vetlanda
4Uppvidinge, Alvesta, Växjo

LIST COLUMNS 파티셔닝은 여기에서 같이 고객이 위치한 도시의 이름에 따라 그 지역에 해당하는 4 개의 파티션 중 하나에 행을 할당 고객 데이터 테이블을 만들 수 있습니다.

CREATE TABLE customers_1 (
    first_name VARCHAR(25),
    last_name VARCHAR(25),
    street_1 VARCHAR(30),
    street_2 VARCHAR(30),
    city VARCHAR(15),
    renewal DATE
)
PARTITION BY LIST COLUMNS(city) (
    PARTITION pRegion_1 VALUES IN('Oskarshamn', 'Högsby', 'Mönsterås'),
    PARTITION pRegion_2 VALUES IN('Vimmerby', 'Hultsfred', 'Västervik'),
    PARTITION pRegion_3 VALUES IN('Nässjö', 'Eksjö', 'Vetlanda'),
    PARTITION pRegion_4 VALUES IN('Uppvidinge', 'Alvesta', 'Växjo')
);

RANGE COLUMNS 자동 파티션처럼 COLUMNS() 절에서 표현식을 사용하여 열 값을 정수로 변환 할 필요가 없습니다 (실제 열 이름이 아닌 표현식을 사용하는 것은 COLUMNS() 에서는 허용되지 않습니다 ).

DATE 및 DATETIME 컬럼을 사용할 수 다음 예제에서는 앞에서 설명한 customers_1 테이블과 동일한 이름 및 컬럼을 사용하고 있습니다 만, renewal 컬럼에 기반 LIST COLUMNS 파티셔닝을 사용하여 고객의 계정 업데이트가 예정되어있는 2010 년 2 월 주에 따라 4 개의 파티션 중 하나에 행이 포함되는 것을 보여줍니다.

CREATE TABLE customers_2 (
    first_name VARCHAR(25),
    last_name VARCHAR(25),
    street_1 VARCHAR(30),
    street_2 VARCHAR(30),
    city VARCHAR(15),
    renewal DATE
)
PARTITION BY LIST COLUMNS(renewal) (
    PARTITION pWeek_1 VALUES IN('2010-02-01', '2010-02-02', '2010-02-03',
        '2010-02-04', '2010-02-05', '2010-02-06', '2010-02-07'),
    PARTITION pWeek_2 VALUES IN('2010-02-08', '2010-02-09', '2010-02-10',
        '2010-02-11', '2010-02-12', '2010-02-13', '2010-02-14'),
    PARTITION pWeek_3 VALUES IN('2010-02-15', '2010-02-16', '2010-02-17',
        '2010-02-18', '2010-02-19', '2010-02-20', '2010-02-21'),
    PARTITION pWeek_4 VALUES IN('2010-02-22', '2010-02-23', '2010-02-24',
        '2010-02-25', '2010-02-26', '2010-02-27', '2010-02-28')
);

이것은 작동하지만 포함 된 날의 수가 매우 많아 경우에, 정의 및 관리가 귀찮아집니다. 그런 경우는 일반적으로 RANGE 또는 RANGE COLUMNS 파티셔닝을 대신 사용하는 편이 현실적입니다. 이 경우 파티셔닝 키로 사용하는 열은 DATE 컬럼이므로 다음과 같이 RANGE COLUMNS 파티셔닝을 사용합니다.

CREATE TABLE customers_3 (
    first_name VARCHAR(25),
    last_name VARCHAR(25),
    street_1 VARCHAR(30),
    street_2 VARCHAR(30),
    city VARCHAR(15),
    renewal DATE
)
PARTITION BY RANGE COLUMNS(renewal) (
    PARTITION pWeek_1 VALUES LESS THAN('2010-02-09'),
    PARTITION pWeek_2 VALUES LESS THAN('2010-02-15'),
    PARTITION pWeek_3 VALUES LESS THAN('2010-02-22'),
    PARTITION pWeek_4 VALUES LESS THAN('2010-03-01')
);

자세한 내용은 섹션 19.2.3.1 "RANGE COLUMNS 파티셔닝" 를 참조하십시오.

또한 ( RANGE COLUMNS 파티셔닝과 마찬가지로) COLUMNS() 절에서 여러 컬럼을 사용할 수 있습니다.

PARTITION BY LIST COLUMNS() 구문에 대한 자세한 내용은 섹션 13.1.17 "CREATE TABLE 구문" 을 참조하십시오.

서울시 강남구 영동대로 602 6층
TEL: 02-6061-0006  /  E: csr@mysqlkorea.com
주식회사 이노클러스터  등록번호 : 727-86-02261
Copyright © innocluster Co. ltd. all rights reserved