定时扫描数据表,删除过时数据


我的数据表是这样设计的,有一个字段是 expired_time 是用来保存过期的时间的,我想做一个定时器定时扫描表,过期的行我就删掉。可是感觉用定时器可能不太精准,如果定时器间隔比较小,虽然误差小了,但是又感觉会查询得太频繁了。

我现在想问,会不会有别的方法做到,更少的误差和更高的性能呢(用缓存是不是也是一个不错的选择)?

编程 java

幸福的小帐篷 10 years, 7 months ago

一些可能的方法

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

Your Answer