집 >데이터 베이스 >MySQL 튜토리얼 >MySQL에서 날짜/시간 열을 기준으로 테이블을 분할할 때 HASH 분할에 문제가 있는 이유는 무엇입니까?
날짜/시간 열로 테이블 파티셔닝
MySQL에서 날짜/시간 열로 테이블을 파티셔닝하면 테이블을 분할하여 효율적인 데이터 관리 및 쿼리 최적화가 가능합니다. 더 작은 논리 단위로. 그러나 HASH 파티셔닝을 사용하여 날짜/시간 컬럼별로 테이블 파티셔닝을 시도할 경우 특정 날짜의 데이터를 선택하는 데 문제가 발생할 수 있습니다.
HASH 파티셔닝 제한 사항
HASH 파티셔닝 사용 시 날짜/시간 열은 MySQL이 파티션 정리를 활용할 수 없기 때문에 문제가 될 수 있습니다. 이는 날짜/시간 값 범위를 기준으로 필터링하는 쿼리가 지정된 파티션을 활용하지 못할 수 있음을 의미합니다.
대체 분할 옵션
이러한 제한을 극복하기 위해 대체 분할 전략을 사용할 수 있습니다. 취업:
TO_DAYS(DATE())의 결과를 추가 INTEGER 열에 저장합니다. 이를 통해 날짜/시간 열 대신 정수 열에서 효율적인 정리가 가능합니다.
TO_DAYS에 RANGE 파티셔닝을 사용하여 테이블 파티셔닝을 수행합니다. (ftime) 열입니다. 이렇게 하면 날짜 범위를 기준으로 파티션이 생성되어 특정 날짜에 대한 정확한 데이터 검색이 가능합니다.
예
다음 RANGE 파티션 테이블을 고려하세요.
CREATE TABLE raw_log_2011_4 ( id bigint(20) NOT NULL AUTO_INCREMENT, logid char(16) NOT NULL, tid char(16) NOT NULL, reporterip char(46) DEFAULT NULL, ftime datetime DEFAULT NULL, KEY id (id) ) ENGINE=InnoDB AUTO_INCREMENT=286802795 DEFAULT CHARSET=utf8 PARTITION BY RANGE( TO_DAYS(ftime) ) ( PARTITION p20110401 VALUES LESS THAN (TO_DAYS('2011-04-02')), PARTITION p20110402 VALUES LESS THAN (TO_DAYS('2011-04-03')), ... PARTITION p20110429 VALUES LESS THAN (TO_DAYS('2011-04-30')), PARTITION future VALUES LESS THAN MAXVALUE );
이 테이블에는 2011년 4월의 각 날짜에 대한 파티션이 포함됩니다. 이제
SELECT * FROM raw_log_2011_4 WHERE ftime = '2011-04-03';
쿼리에서는 p20110403 파티션만 사용하므로 특정 날짜에 대한 데이터를 효율적으로 검색할 수 있습니다.
위 내용은 MySQL에서 날짜/시간 열을 기준으로 테이블을 분할할 때 HASH 분할에 문제가 있는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!