我有一个模型 Post,它有一个 expiry_date。我想知道什么是 在这种情况下管理可伸缩性的最佳方法。 2 个选项:
每当我想从表中选择时,我需要包括 where 到期日期 > 现在。如果表格 Post 长得像个怪物,我会在 麻烦。想象一下 3 年后或更长时间。索引也会很大。
有一个触发器、cron 作业或一个插件(如果存在的话) 绕过表并将过期项目移动到新表 Post_Archive。 这样,我只在我的主表中维护当前的帖子,这意味着 3 年后我不会像选项 1 那样糟糕。
最佳答案
如果您需要连续归档数据(您的 #2),那么 MaatKit 是一个不错的选择。
它可以以 block 的形式“蚕食”数据,而不是运行消耗大量资源的大量查询(并避免污染您的 key 缓存)。
是的,您将从 cron 运行 Maatkit 作业。
与此同时,如果您想同时执行#1,您可以实现一个 View ,它可以方便地包装“WHERE expiry_dat > NOW”条件,这样您就不必将其全部包含在代码中。
关于mysql - 移动过期元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/904237/