开发者社区> 问答> 正文

定时扫描数据表删除过时数据怎么实现?

的数据表是这样设计的,有一个字段是 expired_time 是用来保存过期的时间的,我想做一个定时器定时扫描表,过期的行我就删掉。可是感觉用定时器可能不太精准,如果定时器间隔比较小,虽然误差小了,但是又感觉会查询得太频繁了。
我现在想问,会不会有别的方法做到,更少的误差和更高的性能呢(用缓存是不是也是一个不错的选择)?

展开
收起
蛮大人123 2016-03-04 16:59:46 2395 0
1 条回答
写回答
取消 提交回答
  • 我说我不帅他们就打我,还说我虚伪

    一些可能的方法
    1.可以缓存类似于最后要expired的时间以及对应的id之类的东西,每次只是检查缓存看看是否需要到数据库去删除记录并且更新此缓存。相当于缓存了最优先要删除的记录,只检查缓存。当然这个比较依赖于你的记录基本上是按照expire的顺序排列的才比较有保障或者比较高效。
    2.从slave数据进行查询,满足条件再到主数据库删除。
    3.把数据直接存储在有expire功能的专门数据库里,到期自动删除,如redis等。

    2019-07-17 18:52:33
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
Phoenix 全局索引原理与实践 立即下载
事务、全局索引、透明分布式 立即下载
RowKey与索引设计:技巧与案例分析 立即下载