MySQL 自动按周分区

MySQL partitioning by week automatically

我创建了一个 table 来记录我的应用程序的 activity。 table 每月将记录超过 200 万条记录。所以我想按月或周使用分区

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;

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

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),
....

有没有自动按月或按周创建分区的方法?

谢谢

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

而是使用 TO_DAYS(LogDate) 和明确的日期,例如 '2014-01-01'

不,没有 "automatic" 分区。编写 Perl(或其他语言)代码以从 information_schema 中获取分区结构并计算下一个要添加的分区并不太难。

您希望从PARTITIONing中获得什么?好处很少。我列出了它们 in my blog.

另外,link 有处理清除旧分区的代码,以及如何每周(或每月)高效使用 REORGANIZE PARTITIONS