programing

Mysql, 날짜 범위에서 파티셔닝이 작동하지 않습니다.

i4 2023. 8. 24. 21:48
반응형

Mysql, 날짜 범위에서 파티셔닝이 작동하지 않습니다.

테이블을 분할하려고 합니다. 다음은 테이블의 구조입니다.

CREATE TABLE IF NOT EXISTS `actions` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `uuid` varchar(36) COLLATE utf8_unicode_ci DEFAULT NULL,
  `date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `username` varchar(16) COLLATE utf8_unicode_ci NOT NULL,
  `event` varchar(16) COLLATE utf8_unicode_ci NOT NULL,
  `obj_id` int(11) unsigned NOT NULL,
  `inline` text COLLATE utf8_unicode_ci NOT NULL,
  `meta` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
  PRIMARY KEY (`id`,`date`),
  KEY `event` (`event`),
  KEY `obj_id` (`obj_id`),
  KEY `username` (`username`),
  KEY `date` (`date`),
  KEY `user_date` (`username`,`date`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
 PARTITION BY RANGE ( UNIX_TIMESTAMP(date))
(PARTITION actions_0 VALUES LESS THAN (1209592800) ENGINE = InnoDB, # 2008-05-01
 PARTITION actions_images_1 VALUES LESS THAN (1212271200) ENGINE = InnoDB, # 2008-06-01
 [...]
 PARTITION actions_67 VALUES LESS THAN (1388530800) ENGINE = InnoDB,
 PARTITION actions_68 VALUES LESS THAN MAXVALUE ENGINE = InnoDB)

이제, 제가 특정 날짜를 선택할 때는 괜찮은 것 같습니다.

EXPLAIN PARTITIONS SELECT * FROM `actions` WHERE `date` = '2008-05-04 16:13:15' ;

+----+-------------+----------------+------------------
| id | select_type | table          | partitions       
+----+-------------+----------------+------------------
|  1 | SIMPLE      | actions        | actions_1 

하지만 제가 이 질문을 한다면,

EXPLAIN PARTITIONS SELECT * FROM `actions` WHERE `date` > '2008-05-04 16:13:15' AND `date` < '2008-05-05 16:13:15';

mysql에서 모든 actions_N 테이블을 검색합니다. 제가 무엇을 잘못하고 있습니까?파티션을 사용하는 것은 처음이지만 설명서를 따르면 어디서 틀렸는지 찾을 수 없습니다.

감사합니다!

, 그건 mysql 버그야 http://bugs.mysql.com/bug.php?id=28928

RANGE COLUMNS에서는 DATE 또는 DATTIME 이외의 날짜 또는 시간 유형을 사용하는 파티셔닝 열을 사용할 수 없습니다.

DATE 및 DATTIME. 날짜 또는 시간과 관련된 다른 데이터 형식을 사용하는 열은 분할 열로 지원되지 않습니다.

언급URL : https://stackoverflow.com/questions/8258293/mysql-partitioning-not-working-on-date-range

반응형