有这样一个需求:数据库中有一个日志表,需要定时清理距当前时间48个小时之前(即距今2天整)的数据,但是日志表会不停的有记录的查,改,增。现在需要一个既能清理过期数据,又能保证在清理时对该表的查,改,增没有明显的性能影响的方案,清理的数据的时间点不必非常精确(即可以在表中保存超过48个小时的记录,如距今54个小时的记录)。目前考虑了一个方案:在每天日志表访问量较低时,例如凌晨2,3点做表清理,这时日志表访问量小,清理不会对日志表造成明显的性能影响(另可以加入清理速度控制,进一步减小对性能影响)各位有没有更好的方案?

解决方案 »

  1.   

    凌晨两三点的时候crontab个循环   一万一万条的删除  并且间隔sleep   以平摊压力
      

  2.   

    分成4个表
    或者直接分成 7个表
    (周1日志表,周2日志表,周3日志表,周4日志表,周5日志表,周6日志表,周日日志表,) 代码控制 今天该用哪个表 truncate该truncate哪个表
      

  3.   

    或者直接分成 7个表
    (周1日志表,周2日志表,周3日志表,周4日志表,周5日志表,周6日志表,周日日志表,) 代码控制 今天该用哪个表, 今天该truncate哪个表