类似于日志之类的数据表,只会用到最新一段时间的数据,随着时间累积,会影响到该表的性能与容量瓶颈,但是又不舍得删除这里历史数据,这时候,可以以备份的形式将这些历史数据归档起来。也即是备份到另一张表或是导出存到磁盘等。
归档方式:
- 采用sql语句
首先创建一张新表与旧表一模一样,如:
接着需要归档的数据导入新表并删除旧表中的数据,如:create table log_bak like log;
具体怎么执行上述命令,可以通过存储过程的方式,也可以写个crontab任务,也可以在项目中写定时任务,等等,不一而足。insert into log_bak select * from log where created_at < NOW() - INTERVAL 90 DAY; delete from log where created_at < NOW() - INTERVAL 90 DAY;
需要注意的是,在插入数据到备份表的时候,可能会因为数据量过大而导致执行失败,这时候就需要控制单次执行的数据量,如果是报“The total number of locks exceeds the lock table size.”,则需要将innodb_buffer_pool_size值进行调优,等等。 - 使用第三方工具,如:pt-archiver