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 은 다음의 알고리즘에 따라 도출됩니다.
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입니다.)N=F(column_list) & (V- 1)을 설정합니다.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) )) = 8N= YEAR('2003-04-14') & (8 - 1) = 2003 & 7 = 3 (3 >= 6 is FALSE: record stored in partition #3)
두 번째 레코드가 저장되는 파티션 번호는 다음과 같이 계산됩니다.
V= 8N= 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)
선형 해시로 파티셔닝의 장점은 파티션의 추가, 삭제, 병합 및 분할 속도가 빨라질 것입니다. 이것은 매우 많은 양 (테라 바이트)의 데이터가 포함 된 테이블을 취급 할 때 장점이 될 수 있습니다. 단점은 일반 해시 파티셔닝을 사용하여 획득되는 배분에 비해 데이터가 파티션에 균등하게 배분 될 가능성이 낮은 것입니다.