我正在考虑一个项目,我将使用 SQL 数据库来存储以天为单位的过期日期的行。每天我都会清理数据库中的过期行。我正在考虑两种解决方案:
1
存储expiration
为未来天数的整数。然后,每天:
- 遍历数据库并
1
从expiration
每一行中减去。 - 删除小于
expiration
或等于的行0
。
2
存储expiration
为未来的 UNIX 时间。然后每天:
- 在数据库中搜索小于
expiration
或等于当前 UNIX 时间的行。
在我看来2更优越,因为:
- 它将减少对数据库的写入。可能有些天不使用选项写入任何内容2,但选项1将会修改每一行。
- 如果维护脚本有一天没有运行,1将会落后,而2可以赶上。
我的问题是:
- 我说得对吗?2更好的选择,还是我遗漏了什么?
- 是否存在总体更优的第三种选择?
答案1
相对的到期时间低于绝对在绝大多数情况下都是如此 - 试想一下错过(或更糟:半运行)的 cron 作业对于相对时间意味着什么。
据我所知,相对时间唯一优越的情况是当它们经常以相对形式需要时,必要的计算开始产生影响。除了少数非常专业的应用程序外,这并不现实。
所以:是的,使用到期时间点的 UNIX 时间戳更有意义。