移动过期的物品?
我有一个模型帖子,其中有一个到期日期。 我想知道什么是 在这种情况下管理可扩展性的最佳方法。 2 个选项:
每当我想从表中进行 SELECT 时,我需要包括 where 到期日期> 现在。 如果桌子上的帖子像怪物一样增长,我就会加入 麻烦。 想象一下三年或更长时间后。 索引也会很大。
有一个触发器、cron 作业或一个可以运行的插件(如果存在) 围绕表并将过期项目移动到新表 Post_Archive。 这样,我只在主表中维护当前帖子,这意味着 3 年内我不会像选项 1 那样糟糕。
I have a model Post which has a expiry_date. I want to know what is the
best way to manage scalability in this case. 2 options:
Whenever I want to SELECT from the table, I need to include where
expiry_date > NOW. If the table Post grows like a monster, I will be in
trouble. Imagine after 3 years or more. Indexes will be huge too.Have a trigger, cron job, or a plugin (if it exists) that would go
around the table and move expired items to a new table Post_Archive.
That way, I maintain only current Posts in my main table, which implies
that over 3 years I won't be as bad as option 1.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
如果您需要连续归档数据(您的#2),MaatKit 是一个不错的选择。
http://www.maatkit.org/
它可以“蚕食”成块的数据而不是运行大量查询会消耗大量资源(并避免污染您的密钥缓存)。
所以是的,您可以从 cron 运行 Maatkit 作业。
同时,如果您想同时执行#1,您可以实现一个视图,该视图可以方便地封装“WHERE expiry_dat > NOW”条件,这样您就不必将其全部包含在代码中。
If you need to archive data on a continuous basis (your #2) than a good option is MaatKit.
http://www.maatkit.org/
It can "nibble" away at data in chunks rather than running mass queries which consume lots of resources (and avoiding polluting your key cache).
So yes, you would run a Maatkit job from cron.
In the meantime, if you want to do #1 at the same time, you could maybe implement a view which conveniently wraps up the "WHERE expiry_dat > NOW" condition so you dont have to include it all on your code.
cron 作业对我来说听起来不错,它可以通过直接向 mysql 命令提供一个简单的脚本来完成,例如,大致如下:
A cron job sounds good to me, and it can be done by feeding a simple script directly to the
mysql
command, e.g., roughly: