我想使用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上实现这种分区?
提前谢谢。
发布于 2017-01-13 00:36:49
不要使用BY HASH,它不会像你想的那样工作。特别是,它不会加快您的处理速度。
相反,请考虑BY RANGE,并且不要使用复杂的公式。与其将毫秒转换为一天,不如采用另一种方式--将day常量扩展为毫秒。
既然您似乎要清除旧数据,那么BY RANGE就更合适了--您可以简单地使用DROP PARTITION和REORGANIZE来获得新的价值。有关更多讨论,请参阅:http://mysql.rjweb.org/doc.php/partitionmaint
https://stackoverflow.com/questions/41612835
复制相似问题