小编Chr*_*ris的帖子

如何按时间戳对表进行分区,其中每 i 天的数据都转到分区 i?

我正在考虑对 InnoDB 数据库中的表进行分区。我有一个对应于 UTC 时间戳的列,我想围绕它进行分区。

我想要捕捉的基本思想是一个分区方案,其中具有固定数量的分区,我们按如下方式循环它们:

给定 3 个分区(为简单起见 3 个)

  • 从第 1 天起带有时间戳列的数据进入分区 1
  • 第 2 天带有时间戳列的数据进入分区 2
  • 第 3 天带有时间戳列的数据进入分区 3
  • 第 4 天带有时间戳列的数据进入分区 1
  • ..... 第 5 天 .... 分区 2
  • ...冲洗并重复

基本上,从时间戳中提取日期并将行放入分区中DAY MOD N,其中DAY是时间戳对应的日期(过滤掉小时/分钟/秒)并且N是分区数。

这可能很容易完成,但我找不到类似的例子来模拟这一点。ALTER TABLE以这种方式进行分区的查询是什么?

更新

根据 atxdba 的建议,我尝试按哈希分区。我尝试了以下语句:

ALTER TABLE table_to_partition PARTITION BY HASH(DAYOFMONTH(FROM_UNIXTIME(my_timestamp))) partitions 8;
Run Code Online (Sandbox Code Playgroud)

这导致错误代码 1564:This partition function is not allowed. 查看此分区限制列表,似乎不支持 FROM_UNIXTIMESTAMP 对表进行分区,因此需要从时间戳到日期的不同转换。

mysql partitioning

4
推荐指数
1
解决办法
1万
查看次数

标签 统计

mysql ×1

partitioning ×1