5条回答
默认
最新
回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
墨值悬赏
数据库2013年启动至今,现在需要把数据表里2015年以前的数据删除,有什么便捷的方法
首先如果delete会产生很多碎片,且空间需要move表之后才会释放,所以建议一次到位,找停机时间把表改造成分区表,以后清理数据直接清空分区即可。
create 分区表 as select * from 原表。
如果没有停机窗口,可以考虑在线重定义,静态数据再迁移等方式。
评论
有用 0最简单的方法是
每天业务低谷期,小批量多批次删除2015年以前的数据,比如一次删1万,一天删50次,这样将大任务换成小任务,对系统影响小
评论
有用 0试过在线重定义做分区表,但是速度特别慢,长时间锁表造成应用无法正常登录使用
评论
有用 0在线重定义是很慢,需要慢工出细活。但是是可以解决的。
如果分批量删除,最后回收空间同样麻烦。
如果调控不好在线重定义。可以采纳 lastwinner 的方法,小批量慢慢删除。但是注意会产生大量归档日志。
评论
有用 0
墨值悬赏