• 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 파티셔닝
    4. HASH 파티셔닝
    1. LINEAR 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.4.1 LINEAR HASH 파티셔닝

MySQL은 선형 해시도 지원하고 있습니다. 보통의 해시와 다른 점은 선형 해시는 선형 제곱 알고리즘을 사용하여 일반 해시 해시 함수 값의 법을 사용하는 것입니다.

문법적으로는 선형 해시 파티셔닝 및 일반 해시의 유일한 차이점은 다음과 같이 PARTITION BY 절에 LINEAR 키워드가 추가되는 것입니다.

CREATE TABLE employees (
    id INT NOT NULL,
    fname VARCHAR(30),
    lname VARCHAR(30),
    hired DATE NOT NULL DEFAULT '1970-01-01',
    separated DATE NOT NULL DEFAULT '9999-12-31',
    job_code INT,
    store_id INT
)
PARTITION BY LINEAR HASH( YEAR(hired) )
PARTITIONS 4;

수식 expr 의 경우 선형 해시가되면 레코드가 저장되는 파티션은 num 파티션 중 버티 프로그램 번호 N 입니다. 여기서 N 은 다음의 알고리즘에 따라 도출됩니다.

  1. num 보다 큰 다음 2의 거듭 제곱을 찾습니다. 이 값을 V 라고 부르기로합니다. 이것은 다음과 같이 계산할 수 있습니다.

    V = POWER(2, CEILING(LOG(2, num)))
    

    ( num 이 13이라고합니다.이 경우 LOG(2,13) ​​는 3.7004397181411입니다. CEILING(3.7004397181411) 는 4, V = POWER(2,4) 는 16입니다.)

  2. N = F ( column_list ) & ( V - 1)을 설정합니다.

  3. N > = num 사이 :

    • V = CEIL ( V / 2)을 설정합니다

    • N = N & ( V - 1)을 설정합니다

선형 해시 파티셔닝을 사용하여 6 개의 파티션이있는 테이블 t1 을 다음 문을 사용하여 작성합니다.

CREATE TABLE t1 (col1 INT, col2 CHAR(5), col3 DATE)
    PARTITION BY LINEAR HASH( YEAR(col3) )
    PARTITIONS 6;

col3 컬럼의 값이 '2003-04-14' 및 '1998-10-19' 인 두 개의 레코드를 t1 에 삽입합니다. 이 첫 번째 파티션 번호는 다음과 같이 결정됩니다.

V = POWER(2, CEILING( LOG(2,6) )) = 8
N = YEAR('2003-04-14') & (8 - 1)
   = 2003 & 7
   = 3

(3 >= 6 is FALSE: record stored in partition #3)

두 번째 레코드가 저장되는 파티션 번호는 다음과 같이 계산됩니다.

V = 8
N = YEAR('1998-10-19') & (8-1)
  = 1998 & 7
  = 6

(6 >= 6 is TRUE: additional step required)

N = 6 & CEILING(8 / 2)
  = 6 & 3
  = 2

(2 >= 6 is FALSE: record stored in partition #2)

선형 해시로 파티셔닝의 장점은 파티션의 추가, 삭제, 병합 및 분할 속도가 빨라질 것입니다. 이것은 매우 많은 양 (테라 바이트)의 데이터가 포함 된 테이블을 취급 할 때 장점이 될 수 있습니다. 단점은 일반 해시 파티셔닝을 사용하여 획득되는 배분에 비해 데이터가 파티션에 균등하게 배분 될 가능성이 낮은 것입니다.

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