【发布时间】:2013-06-25 11:56:58
【问题描述】:
我想创建一个分区表,该表将填充数亿条记录。使用分区,我怎样才能将特定日期的记录放入一个分区,然后将第二天的记录放入另一个分区,等等。然后在九十多天后,我可以从最旧的分区中删除旧数据。
我尝试了这个声明(哈希函数使用对分区数量取模来计算哪个分区获取数据)。这样可以确保每天使用 92 个分区中的不同分区;除非它不起作用。
CREATE TABLE records(
id INT NOT NULL AUTO_INCREMENT,
dt DATETIME,
PRIMARY KEY (id)
)
PARTITION BY HASH((MOD(DAYOFYEAR(dt), 92) + 92))
PARTITIONS 92;
上述sn-p的问题是hash表达式中使用的列必须是表内的唯一键。
如何解决这个问题,以便根据每天的记录有九十个(ish)旋转分区?
如果我只是将dt 列添加到主键,如果选择日期范围,它似乎会命中所有分区,这不是我想要的。
有什么想法吗?
【问题讨论】:
标签: mysql partitioning