清理数据策略

1.为什么要清理数据?
硬盘的空间不会无限大,数据库的数据也不可能一直增长,为了保证系统的运行,需要让数据量保持在一个区间内可控。

2.清理什么样的数据?
清理数据的策略主要有两个方面:一个是数据库的数据,一个是硬盘数据(缓存数据也算)

3.如何清理?
清理数据的方法有很多,如果系统已经上线了,那么数据清理是作为该系统的一部分的。
最开始上线的时候,我们采用定期清理,只让系统保存最近一个月(或者一周)的数据,这时把数据清理单独作为一个模块,加入服务器的任务管理器,定期执行。
可是,随着系统不断扩大,数据越来越多,现在一天的数据量是原先的几十倍甚至上百倍,这个时候定期清理有两个弊端:
一是清理时间长,尤其是数据库的数据,执行sql的时间长,极易造成数据库事务未提交,占用数据库lock

Error querying database. Cause: java.sql.SQLException: Lock wait timeout exceeded; try restarting

二是删除的数据量大,容易超出数据库的限制max_binlog_cache_size

Multi-statement transaction required more than 'max_binlog_cache_size' bytes of storage

上面两个问题是可以通过数据库操作和修改配置解决的,但是我们不能保证以后的数据库量会不会更大,所以不能再用定期清理的策略,改用持续小批量清理,对缓存的利用,比如redis,通常用完即删除临时数据,参考这个思路,持续清理数据有两种方法:
一:跟redis的利用一样,在新增数据的模块也删除一些数据,加一条删一条,这样的思路代码实现起来最方便,改动最小,但是又增又删,反复操作数据库,也会增加性能上的开销。
二:数据的清理还是使用单独模块,缩短定时时间,这样每次删除的数据都不会很大,或者把数据切分,先不要一起删除,而是切分出来(例如100条记录一组)删除,保证数据量不会超出数据库相应配置的限制。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值