我创建了一个表来记录我的应用程序的活动。本表每月将记录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),
....是否有按月或周自动创建分区的任何方法?
谢谢
发布于 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。
https://stackoverflow.com/questions/31911168
复制相似问题