首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用mysql中的分区删除大量数据

问使用mysql中的分区删除大量数据
EN

Stack Overflow用户
提问于 2016-01-26 13:41:17
回答 1查看 1.2K关注 0票数 0

我有一张不断增长的桌子。

我想删除超过1年的行(定期-每12小时)。

起初,我认为使用普通的delete语句,但这不是很好,因为有许多条目和数据库将被卡住。然后,我看到我可以使用另一种方法--将“未删除”条目移动到一个新表,重新定位它,并对旧表使用drop。

我想尝试的方法(但不太确定该如何做)是使用partitioning。

我想把我的字段-- created --划分为几个月,然后每个月,删除同一个月--一年前。示例:每月一次,1.1.2016 ->删除2015年1月起的所有条目。

我删除了主键并将其作为索引添加(因为我得到了错误1503)。但还是想不出该怎么做。你能告诉我吗?

这张桌子是:

代码语言:javascript
复制
    CREATE TABLE `myTable` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `created` datetime NOT NULL,
  `updated` datetime NOT NULL,
  `file_name` varchar(255) DEFAULT NULL,
   PRIMARY KEY (`id`)
 ) ENGINE=MyISAM DEFAULT CHARSET=latin1;

加上-我试过这样做:

代码语言:javascript
复制
    ALTER TABLE myTable
   PARTITION BY RANGE( YEAR(created) )
SUBPARTITION BY HASH( MONTH(created) )
    SUBPARTITIONS 12 (
        PARTITION january VALUES LESS THAN (2),
        PARTITION february VALUES LESS THAN (3),
        PARTITION march VALUES LESS THAN (4),
        PARTITION april VALUES LESS THAN (5),
        PARTITION may VALUES LESS THAN (6),
        PARTITION june VALUES LESS THAN (7),
        PARTITION july VALUES LESS THAN (8),
        PARTITION august VALUES LESS THAN (9),
        PARTITION september VALUES LESS THAN (10),
        PARTITION october VALUES LESS THAN (11),
        PARTITION november VALUES LESS THAN (12),
        PARTITION december VALUES LESS THAN (13)
    );

但是我总是会遇到一个错误:当我试图将Table has no partition for value 2016设置为2016-01-26 15:37:22时,会出现一个错误:2016-01-26 15:37:22

EN

回答 1

Stack Overflow用户

发布于 2016-01-26 18:11:05

  • HASH分区没有做任何有用的事情。
  • RANGE分区需要特定的范围。
  • 要保存一年的数据,但要删除12小时的数据块,则需要730个分区;这是不切实际的。

相反,我建议PARTITION BY RANGE有14个月范围(或54个星期),DROP一个月(或一个星期)。例如,现在是一月中旬,所以每月会有:1月15日,2月15日,.,1月16日,未来。

接近1月16日,REORGANIZE未来进入2月16日和未来。

2月16日早些时候,DROP 1月15日。

是的,你将有多达一个月(或一周)的数据等待删除,但这可能不是什么大事。这将是非常有效的。

我会写一份每天的cron工作来做“如果是时候放下,那么就这么做”和“如果是时候重组,就这样做”。

更多细节。

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

https://stackoverflow.com/questions/35015176

复制
相关文章

相似问题

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