我如何使用毫秒(bigInt)值来在一天使用mysql分区?

时间:2017-01-12 12:06:30

标签: mysql partitioning database-partitioning

我想使用mysql分区功能。

我有一个列log_time,其中我将毫秒存储为bigint(假设我无法改变它)。

我想要31个分区,每天一个(使用log_time值计算)。

我尝试了什么:

alter table my_table partition by hash(day(from_unixtime(log_time/1000))) partitions 31;

我收到:不允许使用此分区功能。

似乎mysql只允许特定函数成为要分区的哈希的一部分,而且似乎from_unixtime()不是其中之一(?)

如何在log_time上实现此分区?

提前致谢。

1 个答案:

答案 0 :(得分:0)

不要使用BY HASH,它不会像你想的那样工作。特别是它不会加快你的处理速度。

而是考虑BY RANGE,而不是使用复杂的公式。不要将毫秒计算为一天,而是采用另一种方式 - 将日常数扩展为毫秒。

由于您似乎在清除旧数据,BY RANGE更适合您 - 您只需DROP PARTITIONREORGANIZE即可获得新的一天。有关详细讨论,请参阅此处:http://mysql.rjweb.org/doc.php/partitionmaint