举个例子,假设我有一个网站,用户可以添加无限的 cron 作业(频率为 1 秒),并且我将每个作业的结果记录在 Mysql 表中。
现在,由于我没有无限的存储空间(也因为我不希望我的表变得很大),所以我想将日志历史记录限制为仅过去 30 天。
以前在旧版本的 Mysql 上,我运行 DELETE FROM logs where created_at < DATE_SUB(NOW(), INTERVAL 30 DAY)
,清理我的 table ,但这会导致我的 table 经常崩溃并损坏。它还会在 DELETE
期间锁定我的 table 。这使得网站非常慢。
无论如何,如何为我的 Mysql 表或行实现行轮换(如日志轮换)?删除行是我唯一的选择还是还有其他选择?
最佳答案
您可以使用数据库分区
https://dev.mysql.com/doc/refman/5.7/en/partitioning-types.html
示例
PARTITION BY HASH( MONTH(column) )
这给出了 7 个分区。然后你可以简单地
ALTER TABLE t1 TRUNCATE PARTITION p0;
删除单个分区。
关于mysql - 我正在使用 MySQL 表来记录用户数据(1000 个新行/分钟)。如何在 2 天后轮换行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40188530/