我创建一个表格如下
CREATE TABLE `Archive_MasterLog` (
`LogID` INT(10) NOT NULL AUTO_INCREMENT,
`LogDate` DATETIME NULL,
`AssessorName` VARCHAR(255) NULL,
`TblName` VARCHAR(100) NULL,
PRIMARY KEY (`LogID`),
UNIQUE INDEX `Index_72491D22_3806_4A01` (`LogID`)
)
ENGINE = INNODB;
我想按表格的行数对此表进行分区 ==>每100K行将创建一个新分区。
如何从MySQL做到这一点?
答案 0 :(得分:1)
为什么呢?您可能不会从PARTITIONing
获得任何好处。
你会清除旧数据吗?如果是这样,LogDate上的分区。然后我们可以讨论如何清除。
您在同一对行上有两个键,保留PRIMARY KEY
,然后抛出UNIQUE
键。
您有RecordID
的索引,但该列不存在?
答案 1 :(得分:0)
问题来自频繁的数据。几个月或几周我们有超过2M行/月但其他月份我们有不到10K行。我查看了数据,发现我们应该按LogID进行分区
还有来自客户的意见。他们不想改变表的关键。
这是我的解决方案
CREATE TABLE `ULPAT`.`MasterLog` (
`LogID` INT(10) NOT NULL AUTO_INCREMENT,
`LogDate` DATETIME NULL,
`AssessorName` VARCHAR(255) NULL,
`TblName` VARCHAR(100) NULL,
PRIMARY KEY (`LogID`),
INDEX `LogID` (`LogID`)
)
ENGINE = INNODB
PARTITION BY HASH(mod(ceiling(LogID*0.0000005), 400))
PARTITIONS 400;
我认为这不是最好的解决方案,但对我有用。
由于