MySQL自动按周分区

5 mysql database database-design partitioning mysql-5.1

我创建了一个表来记录我的应用程序的活动.该表将记录每月超过2百万条记录.所以我想按月或按周使用分区

CREATE TABLE IF NOT EXISTS `UL`.`Log` (
  `LogID` INT(20) NOT NULL AUTO_INCREMENT,
  `LogDate` DATETIME NULL,
  `AssessorName` VARCHAR(255) NULL
  PRIMARY KEY (`LogID`),
  INDEX `AssessorName` (`AssessorName`),
  INDEX `LogDate` (`LogDate`)
)
ENGINE = INNODB;
Run Code Online (Sandbox Code Playgroud)

但问题是我必须手动创建分区,如

PARTITION BY RANGE (EXTRACT(YEAR_MONTH FROM LogDate)) (
    PARTITION pre_2014 VALUES LESS THAN (201400),
    PARTITION jan_2014 VALUES LESS THAN (201401),
    PARTITION feb_2014 VALUES LESS THAN (201402),
....
Run Code Online (Sandbox Code Playgroud)

是否可以自动按月或周创建分区?

谢谢

Ric*_*mes 3

不要使用YEAR_MONTH(),它不在此处的列表中: http://dev.mysql.com/doc/refman/5.6/en/partitioning-limitations-functions.html

相反,请使用TO_DAYS(LogDate)明确的日期,例如'2014-01-01'.

不,不存在“自动”分区。information_schema编写 Perl(或其他语言)代码来从 中获取分区结构并计算接下来要添加的分区并不是一项太困难的任务。

你希望从中获得什么PARTITIONing?好处很少。我已将它们列在我的博客中

此外,该链接还包含用于处理清除旧分区的代码,以及如何有效地REORGANIZE PARTITIONS每周(或每月)使用分区。