首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >自动按周进行MySQL分区

问自动按周进行MySQL分区
EN

Stack Overflow用户
提问于 2015-08-10 03:18:15
回答 1查看 8.3K关注 0票数 6

我创建了一个表来记录我的应用程序的活动。本表每月将记录200多万次记录。所以我想使用按月或周划分的方法。

代码语言:javascript
复制
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;

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

代码语言:javascript
复制
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),
....

是否有按月或周自动创建分区的任何方法?

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-08-10 05:05:33

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

相反,使用TO_DAYS(LogDate)和显式日期(如'2014-01-01' )。

不,没有“自动”分区。编写Perl (或其他语言)代码从information_schema中获取分区结构并计算下一步要添加哪个分区并不太困难。

你希望从PARTITIONing中得到什么?几乎没有什么好处。我把他们列在在我的博客里上了。

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

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31911168

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档